Oracle組合索引(composite index)是指在資料庫表的多個列上建立的索引。當查詢操作中涉及到這些列並且是組合索引的前導列時,組合索引會生效。
組合索引的前導列是指在索引中排在最前面的列。只有當查詢的條件中使用了組合索引的前導列,且查詢條件滿足以下特性時,組合索引才會生效:
-
查詢條件中的列順序與索引中的列順序完全一致。
-
查詢條件中的列值是用等值比較(
=
)或範圍比較(>
、<
、>=
、<=
)運算子。 -
如果查詢條件中的列值是用
LIKE
運算子,則必須是不以萬用字元開始的常量。
例如,假設有一個表EMPLOYEES
,其中包含列EMPLOYEE_ID
和DEPARTMENT_ID
,並且有一個組合索引是基於這兩個列建立的。
CREATE INDEX idx_employee_dept ON EMPLOYEES(EMPLOYEE_ID, DEPARTMENT_ID);
-- 使用索引的查詢
SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID = 100 AND DEPARTMENT_ID = 20;
-- 查詢條件順序與索引順序不一致,不會使用索引
SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID = 20 AND EMPLOYEE_ID = 100;
-- 使用範圍比較,會使用索引
SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID > 100 AND DEPARTMENT_ID = 20;
-- 使用LIKE運算子且不是常量,不會使用索引
SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID LIKE '100%';
請注意,只有當查詢的前導列都用於查詢條件,且順序一致時,組合索引才會被使用。如果查詢中包含了組合索引的其他列但不是前導列,或者查詢條件中的列順序與索引不一致,那麼組合索引不會生效。
提示:AI自動生成,僅供參考。