Oracle中怎么设置optimizer_mode 参数

这篇文章给大家介绍Oracle中怎么设置optimizer_mode 参数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Oracle 在执行sql语句时,有两种优化方法:即基于规则的RBO和基于代价的CBO。 在sql执教的时候,到底采用何种优化方法,就由Oracle参数 optimizer_mode 来决定。
查询命令
sql> show parameter optimizer_mode
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode                       string      ALL_ROWS

optimizer_mode 参数值共有以下四个:

第一:CHOOSE
     这个是Oracle的认值。采用这个值时,Oracle即可以采用基于规则RBO,也可以采用基于代价的CBO,到底使用那个值,取决于当前sql的被访问的表中是不是有可以使用的统计信息。
     如果有多个被访问的表,其中有一个或多个有统计信息,那么Oralce会对没有统计信息的表进行采样统计(即不全部采样),统计完成后,使用基于代价的优化方法CBO。
    如果所有被访问的表都没有统计信息,Oracle就会采用基于规则的优化方法RBO。

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

第三:FirsT_ROWS_n
       FirsT_ROWS_n后面的n值可以为1,100,1000,不管是不是有统计信息,全部采用基于成本的优化方法CBO,并以最快的速度,返回前N行记录。

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

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

更改optimizer_mode 的参数方法
        alter session set optimizer_mode='RULE';

关于Oracle中怎么设置optimizer_mode 参数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关文章

这篇文章主要介绍“hive和mysql的区别是什么”,在日常操作中...
这篇“MySQL数据库如何改名”文章的知识点大部分人都不太理解...
这篇文章主要介绍“mysql版本查询命令是什么”的相关知识,小...
本篇内容介绍了“mysql怎么修改字段的内容”的有关知识,在实...
这篇文章主要讲解了“mysql怎么删除unique约束”,文中的讲解...
今天小编给大家分享一下mysql怎么查询不为空的字段的相关知识...