索引覆盖
是指如果查询的列恰好是索引的一部分,那么查询只需要在索引区上进行,不需要到数据区再找数据,这种查询速度非常快,称为“索引覆盖”。 type=index 或 Extra using index
注:如果在innodb引擎下面,非主键索引取ID字段(主键)则会使用到索引覆盖。聚簇索引
Ø innodb
根据id查询条件来得到id字段信息
因为是innodb,在普通索引上存储了主键索引ID号,所以在用普通索引作为条件查询主键时会使用到索引覆盖。
自己查询自己的字段
Ø myisam
使用主键索引来查询会用到索引覆盖
普通索引查询ID字段将不会用到索引覆盖
自己查询自己的字段
like 查询
一般情况下,在使用like查询时,左边字符中没有%的情况下,才可以使用索引[向左原则]。 左边有%,则会导致索引失效。当然字段本身,查询字段本身,则会触发索引覆盖,可以用到索引。
向左原则验证:
索引覆盖:
innodb和myisam索引覆盖不同点
OR运算
如果出现OR条件运算,要求所有参与运算的字段都存在索引,才会使用到索引
or两边,最好都有独立索引。