你可以看看ORACLE调优方面的书。
SQL在被执行前会被解释为执行计划,存储到计划树中。
基于规则和基于代价好象是指导ORACLE SERVER进程怎么解释SQL的。在初始化参数中可以指定。

解决方案 »

  1.   

    RBO自ORACLE 6版以来被采用,有着一套严格的使用规则,只要你按照它去写SQL语句,无论数据表中的内容怎样,也不会影响到你的“执行计划”,也就是说对数据不“敏感”,ORACLE公司已经不再发展这种技术了。CBO自ORACLE 7版被引入,ORACLE自7版以来采用的许多新技术都是基于CBO的,如星型连接排列查询,哈希连接查询,和并行查询等。CBO计算各种可能“执行计划”的“代价”,即cost,从中选用cost最低的方案,作为实际运行方案。各“执行计划”的cost的计算根据,依赖于数据表中数据的统计分布,ORACLE数据库本身对该统计分布并不清楚,须要分析表和相关的索引,才能搜集到CBO所需的数据。
    可在svrmgrl中运行“show parameter optimizer_mode"来查看。ORACLE V7以来缺省的设置应是"choose",即如果对已分析的表查询的话选择CBO,否则选择RBO。如果该参数设为“rule”,则不论表是否分析过,一概选用RBO,除非在语句中用hint强制。
      

  2.   

    这个系统优化手册里面说的比较详细
    RULE模式和COST模式的区别较大
    一个是基于SQL语句写法为多
    一个基于分析得到的STATISTICS
      

  3.   

    谢谢大家,因为我这儿暂时还没有相关的文档.1. 那我做了STATISTICS,就可以选择CBO,而同时与硬性指定RBO相比是不是
    效率会好些了?
    2. 关于这些参考哪本书比较好?(电子书)