ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 优化参数 optimizer_mode 介绍

Oracle 优化参数 optimizer_mode 介绍

原创 Linux操作系统 作者:victorymoshui 时间:2012-05-13 11:57:51 0 删除 编辑

Oracle 在执行SQL语句时,有两种优化方法:即基于规则的RBO和基于代价的CBO。 在SQL执教的时候,到底采用何种优化方法,就由Oracle参数 optimizer_mode 来决定。

SQL> show parameter optimizer_mode

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode                       string      CHOOSE

optimizer_mode 参数值共有以下四个:

第一:CHOOSE

  这个是Oracle的默认值。采用这个值时,Oracle即可以采用基于规则RBO,也可以采用基于代价的CBO,到底使用那个值,取决于当前SQL的被访问的表中是不是有可以使用的统计信息。

    如果有多个被访问的表,其中有一个或多个有统计信息,那么Oralce会对没有统计信息的表进行采样统计(即不全部采样),统计完成后,使用基于代价的优化方法CBO。

   如果所有被访问的表都没有统计信息,Oracle就会采用基于规则的优化方法RBO。

第二:ALL_ROWS

不管是不是有统计信息,全部采用基于成本的优化方法CBO。

第三:FIRST_ROWS_n

不管是不是有统计信息,全部采用基于成本的优化方法CBO,并以最快的速度,返回前N行记录。

第四:FIRST_ROWS

使用成本和试探法相结合的方法,查找一种可以最快返回前面少数行的方法;这个参数主要用于向后兼容。

第五:RULE

这个参数正好和ALL_ROWS相反,不管是不是统计信息,全部采用基于规则的优化方法。

如何更改 optimizer_mode 的参数呢?可以用以下的方法。

SQL> alter session set optimizer_mode='RULE';

会话已更改。


转自:http://blog.csdn.net/whqcfp/article/details/1430653

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

下一篇: 父游标 子游标
请登录后发表评论 登录
全部评论

注册时间:2009-08-26

  • 博文量
    173
  • 访问量
    298391