(1).你知道下面这个执行计划问题在哪里呢?从哪里可以看出?
(2).总共消耗的实际时间为4.19秒,在8和9两步消耗了4.17秒,很明显问题就在这了,这个计划显示内容为:
9-》通过索引范围扫描获取ROWID
8-》通过9获取的ROWID回表取数
难道这样访问不对?这样有什么不对呢?这样当然没有问题,因为问题并不在这,接着往下看;
(3).真正原因在于列starts,循环了216次,那这个216是从哪里来的?为啥产生?接着往下看。。。
(4).216是从第7->6生成的最终结果集+第5的NESTED LOOPS方式而生成的循环,这样问题就清楚了,NL引起的;
(5).解决起来就很简单了,将NL换成HASH,具体如何换可参见如下地址:
http://blog.youkuaiyun.com/launch_225/article/details/37996689
本文详细分析了一个SQL执行计划问题,指出在使用Nestded Loops (NL) 访问时出现循环216次的情况,并解释了问题源于NL的循环机制。进一步提供了解决方案,即替换NL为HASH访问方法,通过实例说明了这种方法的正确应用,以优化查询性能。
110

被折叠的 条评论
为什么被折叠?



