Как подцепить индекс?
Есть таблица MYTABLE с полями A, DATE_FROM, DATE_TO. На ней есть составной уникальный индекс со всеми тремя полями MYTABLE (A, DATE_FROM, DATE_TO). Если писать запрос вида
SELECT *
FROM MYTABLE
WHERE A = 100
AND DATE_FROM < SYSDATE
AND DATE_TO > SYSDATE
То индекс успешно цепляется и стоимость очень низкая. Но если я хочу вывести все строки для сегодняшней даты:
SELECT *
FROM MYTABLE
WHERE DATE_FROM < SYSDATE
AND DATE_TO > SYSDATE
То индекс игнорируется. И запрос работает оооооооочень долго, т.к. очень много исторических не актуальных данных. Почему? Как бы индекс подцепить?
Ответы (1 шт):
Если индекс состоит из нескольких полей, то для того, чтобы индекс использовался оптимально в условии WHERE должно присутствовать минимум первое поле.
В вашем случае, надо перестроить индекс, чтобы даты были в начале и ли создать новый индекс.