如果有一句非常复杂的语句,如a join b join c join d join e join f join g
是不是改换成(((((a join b) ab join c) abc join d ) abcd join e) abcde join f )join g 要好很多呢?因为,我为它指定了一条执行计划的路径。

解决方案 »

  1.   

    CBO 是一把双面刃,我个人觉得除非对于每个SQL都做过测试,否则对CBO一定要谨慎。
    在ORACLE7的版本中,有时,一个SQL 会因为CBO而变得无限费时!!!!
      

  2.   

    在一般的情况中,cbo是能提高查询速度的,
    但是在8i中,9i对优化器又有了进一步处理,cbo难免有判断错误的地方,这样就导致了本是rbo的语句,却使用了cbo。
    如我们一直提倡的bind变量,都可能引起优化器的错误判断。
    对于部分语句,除了hint提示外,还可以用outline来解决问题。
      

  3.   

    所以oracle见意8i前的用RBO,8i及8i以后的用CBO
      

  4.   

    说一句题外话,9i里面绑定变量已经不影响cbo的路径选择了