type说明
ALL 全数据表扫描
index 全索引表扫描
RANGE 对索引列进行范围查找
INDEX_MERGE 合并索引,使用多个单列索引搜索
REF 根据索引查找一个或多个值
EQ_REF 搜索时使用primary key 或 unique类型
CONST 常量,表最多有一个匹配行,因为仅有一行,在这行的列值可被优化器剩余部分认为是常数,const表很快,因为它们只读取一次。
SYSTEM 系统,表仅有一行(=系统表)。这是const联接类型的一个特例。

 

 

 

 

 

 

性能:all < index < range < index_merge < ref_or_null < ref < eq_ref < system/const
性能在 range 之下基本都可以进行调优

补充说明:

system:表只有一行记录,相当于系统表(通常此类表单用来作为系统参数等常用且不经常修改的)

const:通过索引一次就找到,只匹配一行数据

eq_ref: 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配

ref:非唯一性索引扫描,返回匹配某个单独值的所有行(用于=、<、> 操作符带索引的列)

index_merge: 很多人不太深入理解index_merge,并且只会在mysql5.7及以上版本会出现,这里引用CSDN文章给大家一个详细的说明:https://www.cnblogs.com/digdeep/p/4975977.html

index: 这种连接类型只是另外一种形式的全表扫描,只不过它的扫描顺序是按照索引的顺序

all:全表扫描,性能最差