Как подцепить индекс?

Есть таблица 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 шт):

Автор решения: Alex R.

Если индекс состоит из нескольких полей, то для того, чтобы индекс использовался оптимально в условии WHERE должно присутствовать минимум первое поле.

В вашем случае, надо перестроить индекс, чтобы даты были в начале и ли создать новый индекс.

→ Ссылка