CBO与RULE 的区别

ORACLE的优化器有两种优化方式:

基于规则的优化方式(Rule-Based Optimization,简称为RBO)

RBO遵循简单的分级方法学,使用 15 种级别要点,当接收到查询,优化器将评估使用到的要点数目,然后选择最佳级别(最少的数量)的执行路径来运行查询。

 

基于代价的优化方式(Cost-Based Optimization,简称为CBO)

CBO尝试找到最低成本的访问数据的方法,为了最大的吞吐量或最快的初始响应时间,计算使用不同的执行计划的成本,并选择成本最低的一个,关于表的数据内容的统计被用于确定执行计划。 


    IF 初始化参数  OPTIMIZER_MODE  =  CHOOSE  THEN    --(8I  DEFAULT) 
       IF 做过表分析 
          THEN 优化器  Optimizer=CBO(COST);            /*高效*/ 
       ELSE 
         优化器  Optimizer=RBO(RULE);                 /*高效*/ 
       END  IF; 
    END  IF;


区别;

RBO根据规则选择最佳执行路径来运行查询。 


CBO根据表统计找到最低成本的访问数据的方法确定执行计划。

 

使用CBO需要注意: 

  I) 需要经常对表进行ANALYZE 命令进行分析统计; 

  II) 需要稳定执行计划; 

  III)需要使用提示(Hint); 


使用RULE 需要注意: 

I) 选择最有效率的表名顺序 

II)优化SQL 的写法; 


在optimizer_mode=choose时,如果表有统计信息(分区表外),优化器将选择CBO,否则选RBO。 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值