首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 11g 索引底層資料結構:B-Tree、Hash、K-D Tree、Quad Tree

     編輯:Oracle 資料庫相關知識

Oracle 索引不只有 B-Tree。依據資料特性與查詢模式,選擇正確的索引結構可獲指數級效能提升。

1. B-Tree (平衡樹) — 預設、最通用

  • 特性:自平衡、多路搜尋、葉節點同層、支援範圍查詢、排序、等值查詢。
  • 結構:Root → Branch → Leaf (含 ROWID)。
  • 變體:Index-Organized Table (IOT) 將資料直接存於葉節點;Reverse Key Index 反轉鍵值分散熱塊;Descending Index 避免排序。
  • 適用:OLTP 核心索引、高選擇性欄位、範圍/排序查詢。

2. Hash 索引 (Hash Cluster) — 等值極速

  • 原理:HASH(key) → Block Address,單次 I/O 定位。
  • 限制:**不支援範圍查詢、排序、不等式**;需預估大小避免碰撞鏈過長;資料分布均勻時效能最佳。
  • 適用:靜態查找表、等值連接鍵 (如倉庫位置代碼)。

3. K-D Tree (K-Dimensional Tree) — 多維空間索引

  • 2-D Tree 範例:經緯度 (x,y) 交替切分平面,每層依單一維度分割。
  • 優勢:**範圍/圓形區域查詢** (如「附近 5 公里餐廳」) 極快。
  • 劣勢:高度 = 節點數,插入/查詢 O(N) 最壞;平衡需重建。
  • Oracle 實作:Spatial and Graph 選項 的 SDO_GEOMETRY 索引 (R-Tree 為主,K-D 為輔)。

4. Point Quad Tree (點四叉樹) — 空間遞歸分割

  • 將空間遞歸四等分 (NW, NE, SW, SE),點落入對應象限。
  • 優勢:實作簡單、實際高度常小於 K-D Tree、動態插入友善。
  • 劣勢:每次比較需兩座標、邊界點處理複雜。
  • 同屬 Spatial 選項範疇。

選型決策樹

查詢類型
├─ 等值 + 範圍 + 排序          → B-Tree (預設)
├─ 純等值、靜態、高併發       → Hash Cluster
├─ 空間/多維 (經緯度、多維範圍) → Spatial Index (R-Tree/Quad Tree)
└─ 全文搜尋                   → Oracle Text (Context Index)

效能調優關鍵

  • B-Tree:監控 BLEVEL (高度),>3 考慮重建或分區。
  • Hash:監控 CHAIN_COUNT,過大重建並調整 HASHKEYS。
  • Spatial:建立空間索引前必須 INSERT INTO USER_SDO_GEOM_METADATA 註冊元資料。

理解四大結構優勢局限,索引選型不再靠猜。

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