Oracle组合索引(composite index)是指在数据库表的多个列上创建的索引。当查询操作中涉及到这些列并且是组合索引的前导列时,组合索引会生效。

组合索引的前导列是指在索引中排在最前面的列。只有当查询的条件中使用了组合索引的前导列,且查询条件满足以下特性时,组合索引才会生效:

  1. 查询条件中的列顺序与索引中的列顺序完全一致。

  2. 查询条件中的列值是用等值比较(=)或范围比较(><>=<=)操作符。

  3. 如果查询条件中的列值是用LIKE操作符,则必须是不以通配符开始的常量。

例如,假设有一个表EMPLOYEES,其中包含列EMPLOYEE_IDDEPARTMENT_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自动生成,仅供参考。

 

posted on 2024-04-02 13:06  dw2nn  阅读(268)  评论(0编辑  收藏  举报