首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

成本優化器(CBO)誤選全表掃描的四大成因

     編輯:Oracle 資料庫基礎

在 Oracle 7/8 時代,基於成本的優化器(CBO)偶爾會錯誤選擇全表掃描而非索引存取。主要成因有四:

1. 高水位線(High Water Mark)過高

大量刪除操作不會降低 HWM,導致 CBO 認為資料區塊遠多於實際,傾向全表掃描。

2. 優化模式設定不當

OPTIMIZER_MODE = ALL_ROWS 或 CHOOSE 偏好全表掃描;OLTP 環境應設為 FIRST_ROWS。

3. 統計資訊過舊

表大幅增長後未重新收集統計資訊,CBO 依舊依據舊統計資訊估算基數,誤判表較小而選擇全表掃描。

4. 索引鍵值分佈傾斜(Skewed Data)

查詢條件列存在極不均勻的值分佈(如某值僅佔 1%),若無直方圖,CBO 無法感知選擇率差異,可能錯選全表掃描。

針對上述情境,及時收集統計資訊、建立直方圖、調整優化模式,可有效避免 CBO 誤判。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved