oracle 的優化器

pxbibm發表於2015-03-16
oracle的優化是oracle資料庫最核心的部分,它負責解析SQL語句。要想做好sql優化就必須瞭解優化器。為了讓大家對Oracle資料庫的優化器有個全域性的瞭解和認識。我們今天簡歷的聊聊oracle的優化器。
oracle優化器分RBO(基於規則的優化器)和CBO(基於成本的優化器)兩種型別。
優化器的目的是為了獲取SQL的最優執行計劃。
RBO(基於規則的優化器):oracle內建的一套規則。這個套規則是oracle硬編碼在oracle資料庫的程式碼中的。當SQL語句發給oracle伺服器,oracle優化器從SQL語句很多執行路徑中選擇一條執行計劃。
1.基於規則的優化器大致分為15個等級。等級1所對應的執行路徑的執行效率最高。等級15所對應的執行路徑的執行效率最低。
2.等級1所對應的執行路徑就是通過ROWID來訪問單行資料。
3.等級15所對用的執行路徑是全表掃描。
4.在RBO的情況下,執行計劃一旦出了問題,很難調整。
5.SQL語句中涉及的表在SQL語句中的先後順序有可能影響RBO的執行計劃。
6.可以通過等價改寫SQL語句來調整RBO的執行計劃。
CBO(基於成本的優化器):它是基於成本的。這些成本的判斷資訊來至於SQL語句涉及的表,索引,列等相關物件的統計資訊計算出來的。從SQL   語句的執行路徑中選擇成本最小的條做為執行計劃。
1.基於CBO   的優化器受物件 的實際數量,資料分佈等情況的影響。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1462004/,如需轉載,請註明出處,否則將追究法律責任。

相關文章