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

Oracle 索引類型完整分類:邏輯、物理與結構視角

     編輯:Oracle 資料庫基礎

前言

Oracle 索引種類繁多,依分類維度不同可歸納為邏輯、物理與結構三大面向。理解分類有助於依據業務場景選擇正確索引類型。

一、邏輯分類 (功能語意)

類型說明典型用途
Single Column (單欄)單一欄位建立簡單過濾條件
Concatenated / Composite (組合/複合)多欄位,順序敏感多條件查詢、遵循最左前綴
Unique (唯一)強制唯一性 (含單一 NULL)PK、UK、業務鍵
Non-Unique (非唯一)允許重複值一般查詢加速
Function-Based (函數式)對運算式結果索引WHERE UPPER(name)='X'、WHERE salary*12 > 100000
Domain (域索引)擴充索引類型 (Text、Spatial、XML)全文檢索、空間查詢、XML 路徑

二、物理分類 (儲存架構)

類型說明
Partitioned (分區索引)Global 或 Local 分區,對應分區表,便於維護與裁剪
Non-Partitioned (非分區)傳統單一段索引

三、結構分類 (資料結構與適用場景) — 核心決策依據

1. B-tree 索引 (預設、最通用)

  • Normal:標準平衡樹,高度通常 2~3 層,葉節點雙向鏈表。
  • Reverse Key:鍵值位元組反轉,解決遞增主鍵右側熱點爭用。
  • 適用:高基數、OLTP、精確查詢、範圍查詢、ORDER BY、JOIN 驅動。
  • 不適用:OR 條件 (無法合併多個索引掃描)、低基數、全表掃描更快時。

2. Bitmap 索引 (位圖索引)

  • 結構:每個 distinct value 對應一個位圖,bit 位映射 ROWID 範圍。
  • 適用:低基數 (性別、狀態)、資料倉庫、複雜 AND/OR 多條件過濾、星狀查詢。
  • 不適用:高併發 DML (鎖定整個位圖片段、死鎖風險高)、OLTP 核心表。
  • 操作:位圖合併 (BITMAP AND/OR) 極快,但 UPDATE 需鎖定大量 bit。

選擇決策樹

  1. 是否為全文/空間/XML? → Domain Index (CTXSYS.CONTEXT, MDSYS.SPATIAL_INDEX)
  2. 欄位基數極低 (< 50) 且唯讀/批次載入? → Bitmap Index
  3. 需支援函數/運算式查詢? → Function-Based B-tree
  4. 遞增序列主鍵高併發 INSERT? → Reverse Key B-tree
  5. 一般 OLTP 精確/範圍查詢? → Normal B-tree (單欄或組合)
  6. 大表分區? → Local Partitioned Index (對齊分區裁剪)

補充:索引結構細節

  • B-tree 葉節點儲存 **(鍵值, ROWID)**,依鍵值排序,支援範圍掃描。
  • Bitmap 索引頭儲存 **(起始 ROWID, 結束 ROWID, 位圖資料)**,每 bit 對應一行。
  • 索引高度 (BLEVEL) 可透過 USER_INDEXES 查詢,BLEVEL ≥ 3 考慮重建或增加區塊大小。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved