1、OPTIMIZER_MODE选项如下:
* ALL_ROWS
* FIRST_ROWS_n
* FIRST_ROWS
* CHOOSE
* RULE
1、CHOOSE
仅在9i及之前版本中被支持,10g已经废除。8i及9i中为默认值。
这个值表示SQL语句既可以使用RBO优化器也可以使用CBO优化器,而决定该SQL到底使用哪个优化器的唯一因素是,所访问的对象是否存在统计信息。
如果所访问的全部对象都存在统计信息,则使用CBO优化器优化SQL;
如果只有部分对象存在统计信息,也仍然使用CBO优化器优化SQL,优化器会为不存在统计信息对象依据一些内在信息(如分配给该对象的数据块)来生成统计信息,只是这样生成的统计信息可能不准确,而导致产生不理想的执行计划;
如果全部对象都无统计信息,则使用RBO来优化该SQL语句。
2、RULE
仅在9i及之前版本中被支持,10g已经废除。
不论是否存在统计信息,都将使用RBO优化器来优化SQL。
3、ALL_ROWS
在10g中为默认值。
不论是否存在统计信息,都使用CBO优化器,且把CBO的优化目标设定为“最小的成本”。
RBO ,CBO判断依据,就是看COST,card(rows),BYTES是否为空,为空是RBO,不为空则是CBO
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22934571/viewspace-1044190/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22934571/viewspace-1044190/
本文详细介绍了Oracle数据库中SQL优化器的不同模式,包括CHOOSE、RULE、ALL_ROWS等,并解释了这些模式如何影响SQL语句的执行计划选择。特别关注了CBO与RBO优化器之间的区别以及它们在不同条件下的行为。

被折叠的 条评论
为什么被折叠?



