MySQL执行计划最核心字段是 type 字段,用于描述优化器在执行查询时查找记录的方式。
其字段值较多,可分为 3 类加以理解:全表查询、范围查询、等值查询
全表查询
- All:全表扫描,MySQL会扫描整个聚簇索引来找到匹配的行;(聚簇索引扫描)
- INDEX:非聚簇索引扫描,MySQL 会遍历非聚簇索引索引来定位数据;
范围查询
- RANGE:范围扫描,MySQL 会在给定的范围内查找数据;
等值查询
- 单表查询
CONST:单记录扫描,当等值查询唯一索引或主键扫描时,只匹配一行数据,查询非常迅速。
REF:引用扫描,MySQL 会使用索引来查找所有等值数据;(被称为引用扫描的原因:值可能是常量,也可能是联表查询中上
一表的值) - 联表查询
EQ_REF:联表查询时,使用当前表的唯一/主键索引扫描。即对于被连接表的每个记录,当前表只有一个匹配的行会被访问;若未使用当前表唯一索引,则是ALL类型