mysql索引覆盖

2023-12-17 05:42:24

什么是覆盖索引:
?

1、覆盖索引不是一种索引,而是基于索引查询的一种方式而已。

2、覆盖索引是一种避免回表查询的优化策略,只要在一颗索引树上就能获取sql语句查询所需要的所有数据,无需回表查询,这样速度更快。

3、覆盖索引的实现方式:将被查询的字段建立普通索引或者联合索引,这样就可以直接返回索引中的数据,不需要通过索引去定位行记录避免回表情况发生。?

下面是给某一个表添加400W数据,

再给 mobile字段添加了索引

正常来说'%1362%'?是不会走索引的,会查all

但是如果查询结果也只有mobile,就是索引覆盖,这速度会很快。

查 *?时,5.8s

只查mobile时,只有1.6s

看下他们的explan对比

?

时间排序

时间排序的,如果没有用到覆盖索引,是很影响到性能了,因为用到了filesort,这就说明是将数据取到临时内存中做处理。?但是如果给这个时间创建一个索引,并查询条件覆盖了这个时间,速度就会快很多。 当数据多,又给这个时间创建了一个索引,就用不着去回表了,节省了很多查询时间。

?

文章来源:https://blog.csdn.net/liuming690452074/article/details/132309309
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。