Я, кажется, испортил синтаксис подсказки индекса, но я попробовал каждую комбинацию схемы / таблицы / индекса, которую только мог придумать.
Таблица и индекс находятся в другой схеме, чемпользователь SYS (то есть пользователь, с которым я тестирую подсказку индекса)
Это утверждение без подсказки
select id from car.event where dat < sysdate and type != 0
Это способы, которыми я пытался реализовать подсказку индекса дляиндекс dat_type
в схеме car
select /*+ index(car.event car.dat_type) */ id from car.event where dat < sysdate and type != 0
select /*+ index(event car.dat_type) */ id from car.event where dat < sysdate and type != 0
select /*+ index(car.event dat_type) */ id from car.event where dat < sysdate and type != 0
select /*+ index(event dat_type) */ id from car.event where dat < sysdate and type != 0
select /*+ index(event (dat, type)) */ id from car.event where dat < sysdate and type != 0
Итак, для этих пяти операторов я посмотрел свои пять разных sql_ids и взглянул на планы выполнения примерно так:
select * from table(dbms_xplan.display_awr([sql_id]));
Но ни один из них не показывает использование индекса.Все они используют DoP 20. Нужно ли явно отключать параллелизм для использования индекса?Или кто-нибудь может исправить синтаксис моей подсказки по индексу?
Это определение dat_type
index
create index car.dat_type on car.event(dat, type) online;
Редактировать: индекс установлен как невидимый, поэтомучто другие операторы не могут использовать индекс, но я хочу использовать его явно с подсказкой индекса.В моем понимании невидимость не должна быть проблемой для подсказки индекса.Пожалуйста, поправьте меня, если я ошибаюсь.