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

Oracle 索引建立語法大全:唯一、組合、反轉鍵、位圖、函數基 5 類索引建立範例

     編輯:Oracle 教學

Oracle 索引建立語法大全:5 類索引建立範例與適用場景

適當索引能大幅提升查詢效能。本文整理 5 種常見索引的標準建立語法、關鍵字與適用場景速查。

標準建立語法骨架

CREATE [UNIQUE|BITMAP] INDEX index_name
ON table_name (col1, col2, ...)
[TABLESPACE ts_name]
[REVERSE]           -- 反轉鍵
[COMPRESS n]        -- 壓縮前導 n 欄
[LOCAL|GLOBAL ...]  -- 分區索引
[PARALLEL n];       -- 並行建立

五類索引建立範例

類型語法範例關鍵字適用場景
唯一索引CREATE UNIQUE INDEX idx_uk ON t(id) TABLESPACE users;UNIQUE強制唯一性約束、PK/UK 自動建立
組合索引CREATE INDEX idx_comp ON t(c1, c2) TABLESPACE users;多欄位列舉WHERE 條件包含前導欄、覆蓋索引查詢
反轉鍵索引CREATE INDEX idx_rev ON t(seq_id) REVERSE TABLESPACE users;REVERSE遞增序列/時間戳熱點分散,犧牲範圍掃描
位圖索引CREATE BITMAP INDEX idx_bm ON t(status) TABLESPACE users;BITMAP低基數欄位、DSS/倉庫、複雜 AND/OR 組合
函數基索引CREATE INDEX idx_fbi ON t(UPPER(name)) TABLESPACE users;運算式查詢含函數運算 (UPPER, TRUNC, SUBSTR 等)

進階選項補充

  • COMPRESS 2:壓縮組合索引前 2 欄,適合前導欄重複度高。
  • PARALLEL 4:大表建立索引時平行化,建立後記得 NOPARALLEL。
  • ONLINE:11g+ 支援線上建立/重建,DML 不阻塞(需 Enterprise Edition)。
  • INVISIBLE:11g+ 建立隱形索引,優化器忽略,測試效能影響再轉可見。

建立後驗證

-- 確認索引狀態
SELECT index_name, index_type, uniqueness, status, compression
FROM user_indexes WHERE table_name = 'T';

-- 查看執行計畫是否使用
EXPLAIN PLAN FOR SELECT * FROM t WHERE c1 = :b1;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

避坑提醒

  1. 過度索引:每個索引增加 INSERT/UPDATE/DELETE 成本,單表建議 ≤ 5-6 個。
  2. 位圖索引禁用於 OLTP:DML 鎖定整個值範圍 ROWID,易死結。
  3. 函數基索引需收集統計資訊:DBMS_STATS.GATHER_TABLE_STATS(..., METHOD_OPT=>'FOR ALL HIDDEN COLUMNS')。
  4. 反轉鍵索引不可用於範圍查詢、不支援位圖/IOT。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved