MySQL explain type详解

发布时间 2023-05-17 10:18:27作者: 郭慕荣

type类型从快到慢:system > const > eq_ref > ref > range > index > ALL
system
表中只有一行记录(系统表)。是const类型的一个特殊情况。(目前InnoDB已经没有,在MyISAM可以)
const
表中最多只有一行匹配的记录。一般用在主键索引或者唯一键索引上的等值查询(如果是多字段索引,则需要全匹配)
eq_ref
跨表join时,对于驱动表的每一行记录,被动表最多只会读取一行记录。跟单表查询不一样(system,const最快),在跨表查询中,eq_ref是最好的
ref
等值查询,但是可能匹配大于1行记录。比如普通的非唯一索引,或者联合主键和联合唯一索引的左前缀匹配(非全匹配)
ref_or_null
与ref类似,但是条件中多了一个IS NULL判断
range
范围查询,一般用在BETWEEN, LIKE, >, <等
index
扫描整个索引,效率很低,仅仅因为辅助索引的空间比主键索引小,所以比ALL效率高一点。最常用的有SELECT COUNT(*)
ALL
全表扫描