MySQL

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 接近全表行数。

esc