昨天的一次SQL优化过程,仅作记录。
背景是在一台11gR2的机器上,用户反映一个查询操作非常慢,基本都要20~30分钟才能有结果。经过仔细查看该SQL的执行计划,发现由于SQL中使用了or,导致CBO走出了一个非常糟糕的CONCATENATION路径。因为SQL本身是通过程序动态生成的,开发人员不愿意进行大的调整,就采用了/*+ no_expand */提升的方式避免CBO选择CONCATENATION方式,调整之后执行时间提升到1分钟之内。背景是在一台11gR2的机器上,用户
昨天的一次SQL优化过程,仅作记录。
背景是在一台11gR2的机器上,用户反映一个查询操作非常慢,基本都要20~30分钟才能有结果。经过仔细查看该SQL的执行计划,发现由于SQL中使用了or,导致CBO走出了一个非常糟糕的CONCATENATION路径。因为SQL本身是通过程序动态生成的,开发人员不愿意进行大的调整,就采用了/*+ no_expand */提升的方式避免CBO选择CONCATENATION方式,调整之后执行时间提升到1分钟之内。背景是在一台11gR2的机器上,用户