引數OPTIMIZER_MODE
optimizer_mode = all_rows
10g預設方式,不管是不是有統計資訊,全部採用基於成本的最佳化方法CBO。如果表沒有統計資訊,將進行動態取樣。
optimizer_mode = first_rows
使用成本和試探法相結合的方法,查詢一種可以最快返回前面少數行的方法;這個引數主要用於向後相容。
設定為這種CBO模式以後,SQL語句返回結果的速度會盡可能的快,而不管系統全部的查詢是否會耗時較長或者耗系統資源過多。由於利用索引會使查詢速度加快,所以 first_rows 最佳化模式會在全表掃描上進行索引掃描。這種最佳化模式一般適合於一些OLTP系統,滿足使用者能夠在較短時間內看到較小查詢結果集的要求。
optimizer_mode = first_rows_n
不管是不是有統計資訊,全部採用基於成本的最佳化方法CBO,並以最快的速度,返回前N行記錄。
從Oracle 9i開始對一些預期返回結果集的資料量小的SQL語句最佳化模式進行了加強,增加了四個引數值:first_rows_1、first_rows_10、first_rows_100、first_rows_1000。CBO透過 first_rows_n 中的 n 值,決定了返回結果集數量的基數,我們可能僅僅需要查詢結果集中的一部分,CBO就根據這樣的 n 值來決定是否使用索引掃描。
optimizer_mode = choose
採用這個值時,Oracle既可以採用基於規則RBO,也可以採用基於代價的CBO,到底使用那個值,取決於當前SQL的被訪問的表中是不是有可以使用的統計資訊。如果有多個被訪問的表,其中有一個或多個有統計資訊,那麼Oralce會對沒有統計資訊的表進行動態取樣(即不全部取樣),統計完成後,使用基於代價的最佳化方法CBO。
如果所有被訪問的表都沒有統計資訊,Oracle就會採用基於規則的最佳化方法RBO。
optimizer_mode = rule
這個引數正好和ALL_ROWS相反,不管是不是統計資訊,全部採用基於規則的最佳化方法。基於規則的最佳化器模式,是早期Oracle版本使用過的一種最佳化模式。由於RBO不支援自1994年Oracle版本的新特性,如 bitmap indexes,table partitions,function-based indexes等,所以在以後Oracle版本中已經不再更新RBO,並且也不推薦使用者使用RBO這種最佳化模式了。
從上面的討論可以看出,optimizer_mode 引數的設定對CBO是非常重要的,決定了CBO的基本模式。
會話級別修改optimizer_mode:
SQL> alter session set optimizer_mode='RULE';
會話已更改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-662503/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是請求引數、表單引數、url引數、header引數、Cookie引數?一文講懂HeaderCookie
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- Java對比有引數和無引數Java
- 引數配置
- python引數Python
- 超引數
- mt引數
- COMPATIBLE引數
- 常用的jvm配置引數 :永久區引數配置JVM
- nginx 常見引數以及重定向引數配置Nginx
- 引數匹配模型——Python學習之引數(二)模型Python
- 引數的定義和引數的傳遞
- c# 方法引數(傳值,傳引用,ref,out,params,可選引數,命名引數)C#
- Bash變數和引數變數
- python變數和引數Python變數
- Nginx編譯引數大全 configure引數中文詳解Nginx編譯
- 函式引數 引數定義函式型別函式型別
- TypeScript 函式可選引數和預設引數TypeScript函式
- C技巧:結構體引數轉成不定引數結構體
- vue17自定義指令(有引數,無引數)Vue
- 引數匹配順序——Python學習之引數(三)Python
- postman 請求引數和 Spring Boot Controller 接受引數PostmanSpring BootController
- Python函式/動態引數/關鍵字引數Python函式
- 小程式內引數和掃碼引數統一
- livewire 中wire:click=test('中文引數')引數報錯
- 引數校驗
- SweepGradient的引數
- Python多值引數Python
- 引數彙總
- (2)python引數Python
- arp命令 引數
- tasklist命令 引數
- JavaWeb引數配置JavaWeb
- ipconfig命令引數
- Oracle 核心引數Oracle
- JavaScript Date() 引數JavaScript
- lr引數化
- Java(三)引數Java