Индексът е неизползваем, INDEX подсказва и актуализира RBO в Oracle 11

Производителност на СУБД и свързани проблеми

подсказва

Oracle показва интересно (imho) поведение по време на изпълнение на заявки с подсказки към таблици с неизползваеми налични, т.е. неизползваеми индекси

Докато заявката не използва подсказки, можете да наблюдавате очаквания ("разумен") избор на оптимизатора - да използвате индекса за достъп INDEX RANGE SCAN, когато индексът е наличен (статус VALID), а не да използвате индекса в състоянието НЕИЗПОЛЗВАНО (когато достъпът до данните се извършва чрез TABLE FULL SCAN)

И в следа 10053 можете да намерите причините за този избор:

- т.е. UNUSABLE index => означава, че достъпът до индекс (INDEX SCAN) не е възможен. дотук добре

Ако в заявката се появи подкана INDEX (принуждава се да се използва неизползваем индекс), получаваме грешка както в Oracle 10.2, така и в 11.2:

въпреки стойността на параметъра skip_unusable_indexes = TRUE (използва се по подразбиране в 10.2 и 11.2), който според документацията:

Деактивира съобщенията за грешки, указващи, че индексите или дяловете на индекса са в неизползваемо състояние. Този параметър позволява извършването на всякакви операции (вмъкване, изтриване, актуализиране и избиране) върху таблици, които имат индекси или индексни дялове в състояние НЕИЗПОЛЗВАНО.