同一SQL为何运行速度相差非常大


      最近发现公司一报表系统(浏览器访问的)的某一个功能运行有问题,运行很长时间没有结果,报了ORA-01555错误。把这段SQL抓出来后在PL/SQL DEVELOPER中运行,需要10秒钟出来结果。
同样的SQL为何在不同地方运行速度相差这么大呢?会是什么原因造成的
 
      PL/SQL DEVELOPER中执行时走的是嵌套循环联结,而web访问时走的hash。在pl/sql developer中我又把具体时间替换成变量符号(:b1,:b2)时,发现执行计划也变成了hash join了
 
---------------------------------------------------------------------------------------------
 
 
1. 01555并不是那么严重的错误。。。仅仅就是跑不出来而已
 
2. 对于楼主的要求,看来用outline是最好的解决办法,因为不能改code。

3. 在系统层面改optimizer_index_cost_adj会影响其他SQL,危险性较大。

4. 可以试试搜集下统计信息,用CBO来试试。如果不行,就rollback delete
 
stats,还是用outline吧。。。11g可以考虑下sql profile,不过稳定性还是不如
 
outline

 

 

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13165828/viewspace-606345/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13165828/viewspace-606345/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值