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:全表扫描,性能最差
原文:https://www.cnblogs.com/yanbinfeng1995/p/12592289.html
如果您也喜欢它,动动您的小指点个赞吧