前言
优化 SQL 不能靠猜!EXPLAIN 是 MySQL 性能优化神器,可以直接看出:有没有走索引、索引是否失效、是否全表扫描、查询效率如何。
一、EXPLAIN 怎么用?
在 SQL 前加 EXPLAIN 即可:
EXPLAIN SELECT * FROM user WHERE name = '张三';二、核心字段详解(只看重点)
1. type(最重要!)
查询类型,性能从好到差:
system > const > eq_ref > ref > range > index > ALL
ref/range:正常走索引
index:索引全扫描(一般)
ALL:全表扫描(最差,必须优化)
2. key
本次查询真正命中的索引,null = 未命中索引。
3. rows
MySQL 预估扫描行数,越小越快。
4. Extra
Using filesort:文件排序,严重性能问题
Using temporary:临时表,分组/查询过烂
Using index:覆盖索引,性能极佳
三、优化判断标准
type 尽量达到 ref / range
key 不为 null
杜绝 type=ALL(全表扫描)
杜绝 Using filesort、Using temporary