体验零代码搭建

带临时表的SQL查询语句的优化方法

网友投稿  ·  2023-06-03 18:06  ·  所有内容  ·  阅读 704


案例(图1,正式库上该报表的运行时长) 案例(图2,正式库上该报表的SQL语句) 案例(图3,正式库上该报表的执行计划) 定位问题: 印象中,该报表以前优化过,耗时也就几秒到几十秒,效率算得上是非常高的。观察此执行计划,CBO预估的查到数据非常少,但由于报表的SQL语句中使用上了临时表(TYBBSALEDAILYBD21 ),而临时表的数据在库中是无法查看到的,我也不清楚临时表的数据是如何生成的,

带临时表的SQL查询语句的优化方法

带临时表的SQL查询语句的优化方法

案例(图1,正式库上该报表的运行时长)

案例(图2,正式库上该报表的SQL语句)

案例(图3,正式库上该报表的执行计划)

定位问题:

印象中,该报表以前优化过,耗时也就几秒到几十秒,效率算得上是非常高的。观察此执行计划,CBO预估的查到数据非常少,但由于报表的SQL语句中使用上了临时表(TYBBSALEDAILYBD21 ),而临时表的数据在库中是无法查看到的,我也不清楚临时表的数据是如何生成的,因此,无法判断CBO预估的临时表的行数是否准确,该如何下手?

此时,想起测试环境上,有上月对该库进行RMAN恢复测试后留下的测试库。于是启动测试中间件,让测试中间件指向该测试库,尝试在上面查询该报表,看看运行情况如何?

运行时观察其执行计划,如:图2

案例(图2,测试库上的执行计划)

可以看到,测试库上的执行计划,与正式库的完全不一样,而且在测试库上的查询的效率正常,和以往的一样,几十秒即出结果,显然,问题出在正式库的执行计划上,


专访:致远V5协同平台及新品优势亮点 << 上一篇
2023-06-03 18:06
E店宝电商高峰论坛将开谈社会化营销
2023-06-03 18:06
下一篇 >>

相关推荐