查询优化实践-索引覆盖

Posted for ever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询优化实践-索引覆盖相关的知识,希望对你有一定的参考价值。


前段时间有开发反应线上某个接口查询性能很低下,要好几秒钟才能出结果。查看了查询语句,语句并不复杂,就是简单的汇总跟了几个查询条件,只是表的数据量有点大,几百万数据量。

查看了一下执行计划,有使用到索引,但是索引的列并没有覆盖到查询中所有的条件,另外部分列上还用到了函数,很明显这种情况是会到表中循环取数据再次过滤,这种情况明显比不上直接从索引取数据来的快。所以修改方案是将用到函数的列进行等价改写,让计算表达式出现在参数一侧,然后加了一个新的索引,覆盖掉where条件涵盖的列。

 

果然经过此番优化效果很明显,速度蹭蹭蹭的就上去了,一下降到几十毫秒。

以上是关于查询优化实践-索引覆盖的主要内容,如果未能解决你的问题,请参考以下文章

Mysql优化索引覆盖

mysql--索引优化

mysql性能优化-慢查询分析,优化索引最佳实践

PostgreSQL 性能优化 短查询 覆盖索引,前缀索引,索引和排序

索引优化策略

EFCore 中使用覆盖查询(ForSqlServerInclude方法)来优化查询速度