Oracle ігноруватиме індекс з кількох причин, але вони зводяться до двох можливостей: Структура SQL така, що Oracle не може використовувати індекс. Оптимізатор Oracle на основі витрат вирішив не використовувати індекс.
ВІДСУТНИЙ ПЕРЕДНИЙ КРАН ІНДЕКСУ Це перший стовпець індексу у вашому пункті where. Якщо ви не включите передній край індексу як частину пропозиції where of, Oracle не використовуватиме ваш індекс, за винятком особливих обставин операції сканування пропуску індексу. Тому зазвичай це перше, що потрібно перевірити.
Використовуйте пропозицію rebuild_clause для повторного створення існуючого індексу або одного з його розділів чи підрозділів. Якщо індекс позначено як НЕВИКОРИСТАНИЙ, тоді успішне перебудування позначить його як НЕВИКОРИСТАНИЙ. Для індексу на основі функції це положення також вмикає індекс.
ALTER TABLE index_name ON table_name REBUILD; Отже, щоб увімкнути індекс idx_cust_fname, який ви щойно вимкнули, ваша команда буде такою: ALTER TABLE idx_cust_fname ON customer REBUILD; Це активує ваш індекс.
Чому індекс стає непридатним для використання в Oracle? Індекси стануть недійсними або непридатними для використання кожного разу, коли змінюється ROWID, що вимагає перебудови індексу.
Аналіз: SQL Server може ігнорувати індекс, якщо діапазон занадто широкий. Наприклад, ці два запити, ймовірно, досягнуть індексу в стовпці LastUpdated у таблиці з 300 мільйонів рядків, оскільки діапазон дуже вузький.