Две наиболее распространенные причины запроса, не использующего индексы:
- Полное сканирование таблицы выполняется быстрее.
- Плохая статистика.
Если ваши запросы выбирают все таблицы или выполняют объединения, не упоминая первичный ключ в предложении where и т. Д., Скорее всего, будет быстрее выполнить полное сканирование. Без запроса и индексов, а также, предпочтительно, плана объяснения невозможно сказать наверняка.
Однако я бы порекомендовал вам попросить своего администратора баз данных повторно собрать - я надеюсь, если не собрать впервые - статистику в таблице. Используйте dbms_stats.gather_table_stats
с расчетным процентом 25% +.
Если таблицы создаются заново при каждом запуске приложения, попробуйте собрать статистику после создания и генерации первичного ключа. Если они усекаются и пополняются каждый раз, попросите вашего администратора баз данных перестроить их и PK, а затем собрать статистику, поскольку это может значительно увеличить время выполнения запроса.
Не имея никакого контроля над чем-либо, я не понимаю, как можно улучшить время запроса другим способом.