Функциональный индекс 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).

В моем случае оба имеют одинаковую стоимость. Будет ли первый индекс создавать лучшую производительность в некоторых случаях или лучше со вторым (нефункциональным) индексом?

Благодарю.

0 ответов

Другие вопросы по тегам