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 = 扫整张表

相关推荐
JdSnE27zv9 分钟前
数据库性能优化三:程序操作优化
数据库·sql·性能优化
AC赳赳老秦1 小时前
OpenClaw任务复盘自动化:统计每日完成工作、遗留问题,优化工作节奏
java·大数据·linux·运维·服务器·数据库·openclaw
流星白龙1 小时前
【MySQL高阶】20.InnoDB 磁盘文件
android·mysql·adb
AOwhisky1 小时前
学习自测(MySQL系列第一期、第二期)
linux·运维·数据库·学习·mysql·云计算
我叫张小白。2 小时前
Redis BitMap实现用户签到功能
数据库·redis·缓存·fastapi
大数据魔法师2 小时前
MongoDB(九) - MongoDB分片集安装与配置
数据库·mongodb
念何架构之路2 小时前
存储层技术MySQL
数据库·mysql
cfm_29142 小时前
Redis高并发多级缓存介绍 + JDHotkey热点探测了解
数据库·redis·缓存
yun呐2 小时前
mysql数据库误删恢复
数据库·mysql·adb
IvorySQL2 小时前
PostgreSQL 技术日报 (6月3日)|复制日志补丁更新,PG 黑客坊开启
数据库·人工智能·postgresql