在MySQL中查看查询执行计划,主要使用 EXPLAIN 关键字。通过它,可以了解MySQL如何执行SQL语句,比如是否使用索引、表的连接顺序、扫描行数等,帮助优化查询性能。
使用EXPLAIN查看执行计划
在SELECT语句前加上EXPLAIN,即可获取执行计划信息:
EXPLAIN SELECT * FROM users WHERE id = 1;执行后会返回一个结果表,包含以下关键列:
id:查询编号,表示查询的顺序,相同则按从上到下执行,不同则数字越大优先级越高 select_type:查询类型,如 SIMPLE(简单查询)、PRIMARY、SUBQUERY 等 table:涉及的表名 type:连接类型,常见有 system、const、eq_ref、ref、range、index、ALL,越靠前效率越高 possible_keys:可能使用的索引 key:实际使用的索引 key_len:所用索引长度,越短通常越好 ref:显示索引哪一列被使用了,或常量值 rows:MySQL估计需要扫描的行数,数值越小越好 Extra:额外信息,如 "Using where"、"Using index"、"Using filesort" 等,对优化很关键EXPLAIN FORMAT选项
MySQL支持不同格式的执行计划输出:
EXPLAIN FORMAT=JSON SELECT * FROM users WHERE name = 'Tom';使用FORMAT=JSON可以获得更详细的执行信息,包括成本估算、条件过滤等,适合深入分析。
扩展:EXPLAIN ANALYZE(MySQL 8.0+)
在MySQL 8.0及以上版本,支持 EXPLAIN ANALYZE,它会实际执行SQL并返回真实执行过程:
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 25;该命令展示实际运行时间、循环次数等,比EXPLAIN更精准,用于性能调优非常有效。
常见执行计划分析要点
查看执行计划时重点关注:
type是否为ALL(全表扫描),应尽量避免 key是否命中预期索引 rows数值是否过大 Extra中是否有“Using filesort”或“Using temporary”,这些通常意味着性能瓶颈基本上就这些。合理使用EXPLAIN,能快速定位慢查询原因,指导索引设计和SQL改写。不复杂但容易忽略细节。
