1

我有以下查询:

SELECT * FROM USERS WHERE UPPER(FIRST_NAME) = 'JOHN' AND UPPER(LAST_NAME) = 'DOE' AND DOB = '07-SEP-11 00:00:00'

创建功能索引是否有任何性能优势:

CREATE INDEX functional_idx ON USERS (UPPER(FIRST_NAME), UPPER(LAST_NAME), DOB)

对比以下:

CREATE INDEX dob_name_idx ON USERS (DOB, FIRST_NAME, LAST_NAME)

第一个索引使用访问谓词对索引进行范围扫描。

第二个索引使用 Access Predicates = DOB 和 Filter Predicates = UPPER(FIRST_NAME) 和 UPPER(LAST_NAME) 对索引执行 RANGE SCAN。

在我的例子中,两者的成本相同。第一个索引会在某些情况下创造更好的性能,还是与第二个(非功能性)索引一起使用会更好?

谢谢。

4

0 回答 0