ORACLE的優化器共有3種:
a. RULE (基于規則) b. COST (基于成本) c. CHOOSE (選擇性)
設置缺省的優化器,可以通過對init<SID>.ora文件中OPTIMIZER_MODE參數的各種聲明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS
我們可以在SQLPLUS或文件中查詢這個字段的當前值:

上面的是文件中的;下面的是用sqlplus查詢的:

或者可以使用查詢動態視圖中的信息:

為了使用基于成本的優化器(CBO, Cost-Based Optimizer) ,你必須經常運行analyze 命令,以增加數據庫中的對象統計信息(object statistics)的準確性
在缺省情況下,ORACLE采用CHOOSE優化器, 為了避免那些不必要的全表掃描(full table scan) , 你必須盡量避免使用CHOOSE優化器,而直接采用基于規則或者基于成本的優化器
如果數據庫的優化器模式設置為選擇性(CHOOSE),那么實際的優化器模式將和是否運行過analyze命令有關. 如果table已經被analyze過, 優化器模式將自動成為CBO , 反之,數據庫將采用RULE形式的優化器.
posted on 2007-05-25 16:31
LG 閱讀(135)
評論(0) 編輯 收藏 引用 所屬分類:
Oracle