mysql如何查看查询执行计划_mysql查询执行计划查看方法

来源:这里教程网 时间:2026-02-28 20:27:32 作者:

在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改写。不复杂但容易忽略细节。

相关推荐

热文推荐