Oracle功能索引与带过滤谓词的索引

时间:2017-04-10 19:06:41

标签: oracle indexing functional-index

我有以下查询:

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)

vs以下:

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

第一个索引使用Access Predicates对索引进行RANGE SCAN。

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

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

感谢。

0 个答案:

没有答案