EXPLAIN 的 type 列:从 const 到 ALL
type 说的是「用索引怎么定位、最多拿几行」,从好到差:
| type | 含义 | 例子 |
|---|---|---|
| const | 主键或唯一索引等值匹配常量,最多一行 | WHERE id = 1 |
| eq_ref | 连接时被驱动表按主键/唯一索引匹配,每行最多配一行 | JOIN m ON m.id = o.member_id 里的 m |
| ref | 普通索引等值,可能多行 | WHERE name = 'zhangsan' |
| range | 索引上的一段区间 | >、BETWEEN、IN、LIKE 'x%' |
| index | 把整棵二级索引从头扫到尾 | 覆盖索引但用不上最左前缀 |
| ALL | 全表扫描 | 没索引、对列用了函数、隐式类型转换 |
index 和 ALL 都是全扫,index 只是扫的树更小。判断全表扫描就看 type = ALL,再配合 key 为 NULL、rows 接近全表行数。