索引是查詢性能的核心。本文系統梳理 Oracle 七大索引類型的底層結構、創建語法、適用場景與限制,幫助 DBA 根據業務特徵精準選型。
CREATE [UNIQUE|BITMAP] INDEX [schema.]index_name ON [schema.]table_name (col|expr [ASC|DESC], ...) [TABLESPACE tbs] [STORAGE ...] [LOGGING|NOLOGGING] [COMPRESS n] [NOSORT|REVERSE] [PARTITION ...];
CREATE INDEX idx_name ON tbl(col) TABLESPACE tbs;CREATE UNIQUE INDEX ...,主鍵/唯一約束自動創建;CREATE INDEX idx ON tbl(col1, col2) TABLESPACE tbs;,遵循最左前綴原則。DISTINCT 值 / 總行數 < 1%;CREATE BITMAP INDEX idx_sex ON tbl(sex) TABLESPACE tbs; (需 Enterprise Edition)。CREATE INDEX idx_rev ON tbl(seq_col) REVERSE TABLESPACE tbs;;CREATE INDEX idx_upper_name ON tbl(UPPER(name));;WHERE UPPER(name) = 'SMITH';QUERY_REWRITE_ENABLED=TRUE 且收集表統計信息。CREATE CLUSTER ...; CREATE INDEX idx_clu ON CLUSTER clu_name;;| 類型 | 定義 | 適用場景 | 維護開銷 |
|---|---|---|---|
| Global Partitioned | 索引獨立分區,可跨表分區 | 非分區表或需不同分區策略 | 分區維護需 REBUILD 全局索引 |
| Local Partitioned | 索引分區與表分區一一對應 | 分區表標準配置 | 分區維護自動同步 (DROP/TRUNCATE PARTITION) |