mysql判断索引执行情况explain关键字详解
MySQL EXPLAIN 关键字详解
EXPLAIN 是 MySQL 中用于分析 SQL 查询执行计划的关键工具,
它能帮助开发者理解查询的执行方式并优化性能。以下是 EXPLAIN 输出结果的详细解释:
核心字段解析
id
查询的标识符,相同 id 表示同一查询块
数字越大执行优先级越高
select_type
SIMPLE:简单查询(不含子查询或 UNION)
PRIMARY:主查询(最外层查询)
SUBQUERY:子查询
DERIVED:派生表(FROM 子句中的子查询)
UNION:UNION 中的第二个或后续查询
table
当前行访问的表名或别名
partitions
查询涉及的分区(未分区表显示 NULL)
type(重要性能指标)
system > const > eq_ref > ref > range > index > ALL(性能从优到劣)
const:通过主键或唯一索引查询单条记录
ref:非唯一索引查找
range:索引范围扫描
index:全索引扫描
ALL:全表扫描(需优化)
possible_keys
可能使用的索引列表
key
实际使用的索引
key_len
使用的索引长度(字节数)
ref
显示索引的哪一列被使用
rows
预估需要检查的行数(重要优化指标)
filtered
存储引擎返回数据后在 server 层过滤的比例(百分比)
Extra(重要补充信息)
Using index:覆盖索引(避免回表)
Using where:WHERE 条件过滤
Using temporary:使用临时表
Using filesort:额外排序操作
Using join buffer:使用连接缓冲
使用示例
EXPLAIN SELECT * FROM users WHERE id = 1;
典型优化建议:
避免出现 type=ALL(全表扫描)
关注 rows 值过大的查询
优先考虑 Extra 中出现 "Using index" 的查询
注意 Using filesort 和 Using temporary 可能导致的性能问题
通过分析 EXPLAIN 结果,可以识别查询瓶颈并针对性优化索引或 SQL 结构