У меня есть таблица "AvoirStatuts", которая определена следующим образом:
это таблица ассоциации для двух других таблиц, внешние ключи 'num_compte' и 'id_statut'
У меня есть запрос (здесь я создал представление ), чтобы выбрать последний статус для всех учетных записей, например:
CREATE OR REPLACE FORCE VIEW "HR"."ETATACTUELCOMPTES"
("id_statut", "num_compte") AS
select r2."id_statut",r2."num_compte" from
(
select "num_compte",max("createdAt") createdAt
from "AvoirStatuts"
group by "num_compte"
) r1, "AvoirStatuts" r2
where
r1."num_compte"=r2."num_compte"
and r1.createdAt=r2."createdAt";
я хочу ускорить этот запрос с помощью индексов, поэтому я создал такой индекс
create index creation_index on "AvoirStatuts"
("num_compte","createdAt" desc );
но запрос не использует этот индекс, я не знаю почему!
Сколько строк у вас в таблице "AvoirStatuts"? Если их всего несколько, оптимизатор может решить, что быстрее прочитать всю таблицу и просмотреть ее, чем использовать индекс. Операция FULL TABLE SCAN в плане имеет стоимость всего 5, поэтому ее будет сложно улучшить.