首页 存档 技术 查看内容

掀开SQL的神秘面纱,将优化进行到底

2018-3-30 13:00 |来自: 互联网 314 0

摘要: 编辑手记:有这样一条奇怪的SQL,返回结果不足10行,逻辑读达到1.2w,存在索引却走多次全表扫描,如何揭开它神秘的面纱拯救系统性能,答案在这里,你不可错过! 本文来自上周四大讲堂课程分享。 在某运营商的优化经历 ...

编辑手记:有这样一条奇怪的SQL,返回结果不足10行,逻辑读达到1.2w,存在索引却走多次全表扫描,如何揭开它神秘的面纱拯救系统性能,答案在这里,你不可错过!

本文来自上周四大讲堂课程分享。

在某运营商的优化经历中曾经遇到了一条比较有意思的SQL。

该最开始的sql执行情况如下:


SQL语句:


执行计划如下:


统计信息如下:


针对以上信息我们分析如下:

1) 该sql每天执行上千次,平均每次执行返回不到10行数据,但是平均逻辑读达到1.2W,可能存在性能问题。

2)ID为4,5的执行计划路径中出现了两个全表扫描,看到这儿我们可以想到可能是没有合适的索引导致走了全表扫描从而执行效率低下。

3)ID为2的执行计划路径出现了FILTER,且3,和6为其子路径,如果FILTER有两个及两个以上的子路径,那么他的执行原理将类似于嵌套循环,id号最小的子路径如果返回行数较多,可能会导致多次执行id号更小的子路径,导致性能低下。一般存在“OR EXISTS”的时候会出现此情况,可以根据情况避免。

4)存在条件“rownum

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部