天天看点

生产环境sql语句调优实战第五篇

今天在生产环境中发现一条sql语句尽管走了主键索引,但是查询还是很慢。

sql语句类似下面的形式:

查看该sql的执行计划

发现有严重的io问题,瓶颈就在于使用的primary key对应的index

生产环境sql语句调优实战第五篇

这个问题很值得深究,完全可以使用如下的方式来验证。我尝试使用pk的Hint,另外不加任何hint,看表查询的时候会不会使用index

启用了index range scan,而且从执行计划和统计信息来看,明显要比全索引扫描效率高得多。

可以看到使用index range scan之后,先查询了索引列的信息,然后无法走索引过滤了其他的条件。根据目前的数据情况,这个效率要比全索引效率还高的多。

以下是做了hint的改动之后,统计信息的情况,可以看到明显的改善。对于这个Hint的细节需要和客户做更多的确认,毕竟对于调优不能越调越差,稳定和高效才是关键。