常見索引:B-Tree (最常用)、Bitmap、Reverse B-Tree、Function-based (8i+)。B-Tree 意為「平衡」,Root 到任一 Leaf 經過相同層級。開發者偏好單欄索引,但未必最佳。
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 滿足條件。
索引設計需對應用進行整體分析,正確設定索引有大量優化空間可挖掘。