MySQL EXPLAIN 使用详解与执行计划分析优化

MySQL EXPLAIN 使用详解与执行计划分析优化

一、什么是 EXPLAIN?

EXPLAIN 是 MySQL 提供的 SQL 语句分析工具,可以显示 SQL 语句在执行时的执行计划,包括表的访问顺序、使用的索引、连接类型、扫描行数等。通过分析 EXPLAIN 的输出结果,可以帮助我们发现 SQL 性能瓶颈,进行有针对性的优化。


二、EXPLAIN 的基本用法

EXPLAIN SELECT * FROM users WHERE email = '[email protected]';

或者

EXPLAIN FORMAT=JSON SELECT * FROM users WHERE email = '[email protected]';

三、EXPLAIN 输出字段详解

字段 含义
id 查询中每个 SELECT 子句的标识符,越大优先级越高
select_type 查询类型(SIMPLE、PRIMARY、SUBQUERY、UNION等)
table 当前访问的表名或别名
partitions 匹配的分区(如有分区表)
type 连接类型,反映表的访问方式(性能由好到差:system > const > eq_ref > ref > range > index > ALL)
possible_keys 可能用到的索引
key 实际使用的索引
key_len 使用索引的长度
ref 哪个字段或常量与 key 一起使用
rows 预估需要读取的行数
filtered 经过条件过滤后剩余的百分比(MySQL 5.7+)
Extra 额外信息,如 Using index、Using where、Using filesort、Using temporary 等

四、type 连接类型说明(性能由好到差)

  • system/const:表只有一行数据或主键等值查询,效率最高
  • eq_ref:唯一索引等值查询
  • ref:非唯一索引等值查询
  • range:范围查询(如 between、>、<、in)
  • index:全索引扫描
  • ALL:全表扫描,性能最差

优化目标:
尽量让 type 为 consteq_refrefrange,避免 ALL


五、EXPLAIN 结果分析案例

1. 全表扫描(ALL)

EXPLAIN SELECT * 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值