Ваше предложение WHERE содержит только объединения. Там нет фильтров. Это означает, что ваш запрос должен учитывать все строки хотя бы в одной таблице. Из этого следует, что ваш запрос должен выполнить ПОЛНОЕ СКАНИРОВАНИЕ ТАБЛИЦЫ хотя бы одной из ваших таблиц, а не индексированное чтение. Полное сканирование таблицы является наиболее эффективным способом получения всех строк в таблице.
Так что не исправляйте синтаксис подсказки INDEX, избавьтесь от нее.
Затем выясните, какая таблица должна управлять вашим запросом. Это бизнес логика. Вероятно, ваше требование что-то вроде
"Подведите итог BL_DETAILS и BL_FREIGHT
для каждой строки в BL_CONTAINERS. "
В этом случае вы можете подумать, что вам нужно полное сканирование таблицы BL_CONTAINERS. Но если BL_FREIGHT имеет больше строк, чем BL_CONTAINERS, и каждый BLF_REF_NO соответствует BL_REF_NO (т. Е. Существует внешний ключ на BL_FREIGHT.BLF_REF_NO, ссылающийся на BL_CONTAINERS.BL_REF_NO), вероятно, было бы лучше перейти из BL_FREIGHT.
Обратите внимание, что это верно, если вас интересуют только BL_CONTAINERS, которые имеют соответствующие строки BL_FREIGHT. Но если вы хотите включить контейнеры, которые не использовались (т. Е. Они не соответствуют ни одной записи BL_FREIGHT), вам необходимо использовать внешние объединения и удалить таблицу BL_CONTAINERS.
Эти соображения усложняются, когда вы добавляете BL_DETAILS в микс. Похоже, что ваш отчет основан на категориях BL_DETAILS (как заметил Джеффри, нам трудно понять ваш запрос без псевдонимов или описаний). Так что, возможно, BL_DETAILS - правильный кандидат для вождения стола.
Как видите, настройка требует понимания бизнес-логики и деталей модели данных. У вас есть местные знания, а у нас нет.
Есть инструменты, которые могут вам помочь. Oracle имеет EXPLAIN PLAN, который покажет вам, как база данных будет выполнять запрос. Оптимизатор запросов становится лучше с каждым выпуском, поэтому важно, какую версию базы данных вы используете. Вот документация для 10g .
Важно отметить, что вам нужно предоставить базе данных точную статистику, чтобы она могла составить хороший план. Узнайте больше.