mysql explain type 各个字段解释

system > const > eq_ref > ref > range > index > ALL

一、总览理解(先记住)

type 性能 含义
system 最优 表只有1行
const 极优 主键唯一查询
eq_ref 很好 join 唯一索引匹配
ref 好 普通索引等值查询
range 中等 范围扫描
index 较差 扫描整个索引
ALL 最差 全表扫描

二、逐个解释(面试标准答案)


1. system(最好)

含义:

表只有一行数据(系统表或极小表)。

复制代码

select * from config;

如果表只有一条记录。

特点:

  • 几乎瞬间完成
  • 极少见

2. const(非常好)

含义:

通过 主键 / 唯一索引 一次就找到一条记录。

复制代码

select * from user where id = 1;

id 是主键。

特点:

  • 只匹配一行
  • 最常见高效查询

3. eq_ref(join 最优)

含义:

多表关联时,使用主键或唯一索引,每次关联只返回一条记录。

复制代码

select *

from order o

join user u on o.user_id = u.id;

u.id 是主键。

特点:

  • join 性能很好
  • 一对一关联

4. ref(常见且不错)

含义:

使用普通索引做等值查询,可能匹配多行。

复制代码

select * from user where name='Tom';

name 有普通索引。

特点:

  • 常见业务查询
  • 比 const 稍差(可能多行)

5. range(范围扫描)

含义:

索引范围查询。

复制代码

select * from user where age > 18;

或:

复制代码

where id between 1 and 100

where name like 'Tom%'

where id in (1,2,3)

特点:

  • 走索引
  • 扫描一段范围,不是一条

6. index(全索引扫描)

含义:

扫描整个索引树,而不是扫数据表。

复制代码

select name from user;

name 有索引,优化器选择扫索引。

特点:

  • 比 ALL 好(索引通常比数据行小)
  • 但仍然扫描全部索引记录

7. ALL(最差)

含义:

全表扫描。

复制代码

select * from user where phone='138';

phone 没索引。

特点:

  • 从头到尾扫整张表
  • 大表非常慢

三、面试官最爱追问:为什么 index 比 ALL 好?

index

扫描的是:

复制代码

索引页

更小、更有序。

ALL

扫描的是:

复制代码

整行数据页

更大、更慢。


四、如何记忆(推荐)

复制代码

system const = 一条记录秒查

eq_ref ref = 索引关联/等值查询

range = 范围查

index = 扫全部索引

ALL = 扫整张表

相关推荐
IvorySQL5 小时前
PostgreSQL 日报|修复截断 zstd 备份检测(10 月 9 日)
数据库·postgresql
刘胡子大叔6 小时前
SQL 脚本的导入顺序
数据库·sql
代码什么用6 小时前
Spring对IoC的实现
数据库·spring
hz567898 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC8 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday8 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
半杯咖啡半行码9 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt
Yyyyyy~9 小时前
[ Mysql ] 库的操作
mysql
小米里的大麦9 小时前
16 MySQL 事务
数据库·mysql
西柚小萌新9 小时前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)
java·开发语言·数据库