首页/数据/数据库速查/EXPLAIN 读执行计划:type / key / rows / Extra
本包目录(495 条)
MySQL 基础与连接36 条
SQL 语法52 条
用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

EXPLAIN 读执行计划:type / key / rows / Extra

用 EXPLAIN 看优化器怎么执行:访问类型、命中索引、估算行数与额外动作(filesort、temporary)。调优从它开始。

数据库速查数据更新于 2026-10-12

常见 type 与含义

type含义风险
system / const常量或系统表单行最快
eq_ref连接用唯一索引等值匹配好
ref普通索引等值匹配常见且可接受
range索引范围扫描尚可,注意范围大小
index全索引扫描偏慢
ALL全表扫描优先优化对象

使用与解读

使用与解读
EXPLAIN SELECT * FROM orders WHERE user_id = 42 ORDER BY created_at DESC LIMIT 10;
explain ANALYZE SELECT * FROM orders WHERE user_id = 42;   -- 8.0.18+ 实际执行拿真实行数
rows 是估算值;Extra 出现 Using filesort / Using temporary / Using join buffer 时优先看这些点。

易错点

  • EXPLAIN 不执行语句(8.0.18 前的 EXPLAIN ANALYZE 语义不同),它给的 rows 可能与真实差距很大
  • 对分区表与复杂 JOIN 的解释要结合 filtered 列一起看,不能只看 type

数据来源与参考

  • MySQL 8.0 Reference Manual: EXPLAIN Output Format

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌