回表
通过普通索引无法直接查询到行数据信息,需要先通过普通索引定位到主键值,再通过聚簇索引定位到行数据
覆盖索引
select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖
Extra值为Using index
最左匹配
最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配
索引下推
MySQL5.6添加
已知联合索引(name,age),假如表中name=‘test’有两条数据,age分别为20、21,现在想找到age=20的数据信息
5.6之前
直接通过name(“test”)查询,忽略age字段,匹配到两条数据,再通过两个id找到age=20的数据
5.6之后
InnoDB并没有忽略age这个字段,而是在索引内部就判断了age是否等于20,对于不等于20的记录直接跳过(这个就是索引下推),因此只会匹配到一条记录
Extra值为Using index condition