ORACLE 收集多列统计信息的妙原创
金蝶云社区-福寿双全
福寿双全
3人赞赏了该文章 185次浏览 未经作者许可,禁止转载编辑于2020年12月31日 17:00:51
某个SQL的WHERE段里的条件,是用计算列做为过滤条件,如下:

FPICKEDQTY = ((FINCDEFECTRETURNQTY + FGOODRETURNQTY) + FPRCDEFECTRETURNQTY)

这是个复杂的过滤条件,正常情况下,优化器无法准确预估经过这条件后,返回正确的行数,
因此,在执行此语句时,优化器预估经过该条件后,只返回几行记录,因此选择了走圈套循环,

但在ORACLE11G,对这条件里的计算列 ((FINCDEFECTRETURNQTY + FGOODRETURNQTY) + FPRCDEFECTRETURNQTY)做多列统计信息采集后,再来测试执行计划,发现效果杠杠的。

测试效果显示,后者的执行计划,比前者减少了300万的逻辑块读,也就是,CPU 可以少算了大概
3000*8192M = 24G 字节的数据

赞 3