什么是覆盖索引:
?
1、覆盖索引不是一种索引,而是基于索引查询的一种方式而已。
2、覆盖索引是一种避免回表查询的优化策略,只要在一颗索引树上就能获取sql语句查询所需要的所有数据,无需回表查询,这样速度更快。
3、覆盖索引的实现方式:将被查询的字段建立普通索引或者联合索引,这样就可以直接返回索引中的数据,不需要通过索引去定位行记录避免回表情况发生。?
下面是给某一个表添加400W数据,
再给 mobile字段添加了索引
正常来说'%1362%'?是不会走索引的,会查all
但是如果查询结果也只有mobile,就是索引覆盖,这速度会很快。
查 *?时,5.8s
只查mobile时,只有1.6s
看下他们的explan对比
?
时间排序的,如果没有用到覆盖索引,是很影响到性能了,因为用到了filesort,这就说明是将数据取到临时内存中做处理。?但是如果给这个时间创建一个索引,并查询条件覆盖了这个时间,速度就会快很多。 当数据多,又给这个时间创建了一个索引,就用不着去回表了,节省了很多查询时间。
?