Oracle中怎么设置optimizer

80次阅读
没有评论

共计 952 个字符,预计需要花费 3 分钟才能阅读完成。

这篇文章给大家介绍 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 参数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计952字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)