索引是查詢效能核心杠桿。本文系統梳理 Oracle 11 類索引類型:核心 B-Tree 族、數據倉庫位圖族、特殊用途索引、測試輔助索引,附優化器導向選型原則與統計信息維護鐵律。
CREATE INDEX 類型,存儲列值 + ROWIDINDEX (c, d) 支持 WHERE c=...,不支持 WHERE d=... 單列查詢CREATE INDEX idx_upper_name ON emp(UPPER(ename))TO_DATE 格式化列CREATE INDEX idx_rev ON t(col) REVERSECREATE BITMAP INDEX idx_bj ON fact(dim_col) FROM fact, dim WHERE fact.dim_key=dim.dim_key| 類型 | 語法特徵 | 核心優勢 | 適用場景 |
|---|---|---|---|
| 壓縮索引 | CREATE INDEX ... COMPRESS n | 葉塊減少,I/O 降低,緩存友好 | 重複前綴高的聯合索引 |
| 降序索引 | CREATE INDEX ... (col DESC) | 避免 ORDER BY col DESC 排序 | 時間序列倒序查詢高頻 |
| 全局分區索引 | GLOBAL PARTITION BY RANGE... | 跨分區唯一性、單點查詢單分區 | 分區表主鍵/唯一鍵 |
| 本地分區索引 | LOCAL | 分區維護無需重建索引 | 分區表非唯一索引 |
| 索引組織表 (IOT) | CREATE TABLE ... ORGANIZATION INDEX | 數據存入索引葉塊,主鍵查詢單次 I/O | 主鍵高頻點查、配置/字典表 |
| 簇索引 | CREATE CLUSTER ... INDEX | 多表共存同一塊,連接零 I/O | 強綁定主從表(罕用) |
| 域索引 | CREATE INDEXTYPE ... CREATE INDEX ... INDEXTYPE IS ... | 擴展性:空間、文本、用戶定義 | Oracle Spatial/Text/自定義類型 |
CREATE INDEX ... INVISIBLE,對 CBO 不可見,驗證方案無影響生產CREATE INDEX ... NOSEGMENT,不分配段,僅供優化器評估計劃,GB 級表秒級驗證DBMS_STATS.GATHER_TABLE_STATS(..., METHOD_OPT=>'FOR ALL COLUMNS SIZE AUTO')EXPLAIN PLAN + DBMS_XPLAN.DISPLAYConsistent Gets、Physical Reads、Sort/Merge Bytes索引設計是「業務訪問模式」與「存儲結構」的精準耦合,無通用最佳,只有場景最適。