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

Oracle 索引選擇策略:單欄 vs 複合索引實測對比

     編輯:Oracle 資料庫基礎

索引類型與選擇誤區

常見索引:B-Tree (最常用)、Bitmap、Reverse B-Tree、Function-based (8i+)。B-Tree 意為「平衡」,Root 到任一 Leaf 經過相同層級。開發者偏好單欄索引,但未必最佳。

實戰案例:單欄索引 vs 複合索引

查詢場景


SELECT COUNT(1) FROM MYTABS 
WHERE COID >= 130000 AND ISSUEDATE >= TO_DATE('2001-07-20','YYYY-MM-DD');

方案一:兩個單欄索引


I_MYTABS1(COID), I_MYTABS2(ISSUEDATE)

執行統計: Cost=384、Consistent Gets=5,054、Physical Reads=2,206、讀取 ~7,000 區塊

方案二:複合索引


I_MYTABS_TEST(COID, ISSUEDATE)

執行統計: Cost=3、Consistent Gets=283、Physical Reads=76、讀取 ~300 區塊

結論與建議

7,000 區塊 vs 300 區塊,複合索引效率提升 20 倍以上。單欄索引導致索引範圍掃描後仍需大量 Table Access by Rowid,複合索引可直接 Index Range Scan 滿足條件。

索引設計需對應用進行整體分析,正確設定索引有大量優化空間可挖掘。

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