Функциональный индекс Oracle против индекса с предикатами фильтра
У меня есть следующий запрос:
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)
Первый индекс выполняет RANGE SCAN для индекса с предикатами доступа.
Второй индекс выполняет RANGE SCAN для индекса с предикатами доступа = DOB и предикатами фильтра = UPPER(FIRST_NAME) и UPPER(LAST_NAME).
В моем случае оба имеют одинаковую стоимость. Будет ли первый индекс создавать лучшую производительность в некоторых случаях или лучше со вторым (нефункциональным) индексом?
Благодарю.