最为常见的扫描方式有:
(1)system:系统表,少量数据,往往不需要进行磁盘IO;
(2)const:常量连接;
(3)eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描;
(4)ref:非主键非唯一索引等值扫描;
(5)range:范围扫描;
(6)index:索引树扫描;
(7)ALL:全表扫描(full table scan);
(1)explain结果中的type字段,表示(广义)连接类型,它描述了找到所需数据使用的扫描方式;
(2)常见的扫描类型有:
system>const>eq_ref>ref>range>index>ALL
其扫描速度由快到慢;
(3)各类扫描类型的要点是:
system最快:不进行磁盘IO
const:PK或者unique上的等值查询
eq_ref:PK或者unique上的join查询,等值匹配,对于前表的每一行(row),后表只有一行命中
ref:非唯一索引,等值匹配,可能有多行命中
range:索引上的范围扫描,例如:between/in/>
index:索引上的全集扫描,例如:InnoDB的count
ALL最慢:全表扫描(full table scan)
(4)建立正确的索引(index),非常重要;
(5)使用explain了解并优化执行计划,非常重要;