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

Oracle 索引類型選擇指南:位圖、B-tree 適用場景與設計原則

     編輯:Oracle 資料庫基礎

索引雙面性

索引加速查詢但增加 DML 開銷與空間佔用。並非越多越好,需依資料特性與存取模式精選。

建議一:基數低欄位善用位圖索引

基數 = 欄位不重複值數目。如性別 (2)、婚姻狀態 (3)、民族 (有限)。

  • B-tree 索引在低基數欄位會回傳大量 ROWID,效率低。
  • 位圖索引為每個相異值建立位圖,相同值共用位元,掃描極快。
  • 適用場景:
  1. 欄位基數小且常作查詢條件
  2. WHERE 條件多用 AND/OR 組合 (位圖可直接邏輯運算)
  3. 需查詢 IS NULL (B-tree 忽略 NULL,位圖記錄 NULL)

注意:>、!= 等範圍/不等條件仍以 B-tree 為宜。

建議二:建立索引的限制條件

  1. 小表勿建索引: 記錄 < 100 行 (如部門表、帳號表) 全表掃描更快。
  2. 大表但極少查詢: 僅建表級索引 (如系統中繼資料表),欄位級索引免建。
  3. NULL 欄位視情況: 常以 IS NULL 查詢才建位圖索引,否則免建。

建議三:多表連接查詢的索引設計

連接鍵 (JOIN KEY) 兩側皆建索引,可顯著提升連接效能 (如員工編號關聯薪資表、部門表)。

建議四:在更新速度與查詢速度間尋找平衡

  • 以查詢為主、更新少 → 多建索引
  • 以更新為主、查詢少 → 少建索引
  • 頻繁被視圖存取的表 → 適度增加索引

總結

寧缺勿濫。依基數、查詢模式、NULL 需求、連接關係、更新頻率綜合評估,定期審視索引使用情況 (配合 9i 監控功能) 移除無效索引。

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