首页/数据/SQL 速查/EXPLAIN 关键列总览
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

EXPLAIN 关键列总览

id、type、key、key_len、rows、filtered、Extra 各列分别回答什么问题:理解列含义才能把输出读成有效信息。

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

EXPLAIN 主要列

列含义
id查询块编号;同 id 的行属于同一 SELECT 块
select_type该行来源类型:SIMPLE / PRIMARY / SUBQUERY / DERIVED / UNION 等
type单表访问类型:const、eq_ref、ref、range、index、ALL 等
key实际选择使用的索引;NULL 表示没有走索引
key_len索引查找实际用到的字节数,可推断命中复合索引的前几列
rows预估扫描行数(不是返回行数)
filtered应用条件过滤后剩余行的百分比(估算)
Extra补充信息:Using index / Using where / Using filesort 等

示例

示例
EXPLAIN SELECT * FROM orders WHERE user_id = 100;

-- 输出列较多时,用 TREE 格式看单行摘要
EXPLAIN FORMAT=TREE SELECT * FROM orders WHERE user_id = 100;

易错点

  • 把 rows 当成实际返回行数:它是基于统计信息的估算扫描量,需要与 EXPLAIN ANALYZE 的实测对照
  • 忽略 filtered 只看 rows:两表连接时 rows×filtered 才是传给下一步的行数估算

数据来源与参考

  • MySQL 8.0 Reference Manual §8.8.2 EXPLAIN Output Format
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌