Таблица заказа в соединении: SQL Tuning - PullRequest
2 голосов
/ 11 сентября 2009

У меня есть запрос с 10 объединенными таблицами.

Нужно ли выполнять какой-либо порядок написания SQL-соединений?

Предположим, если в таблице 1 имеется 1000 записей, в таблице 2 - 900 записей и т. Д.

Так что мне нужно написать объединение для таблицы с большим числом записей и последующим меньшим числом записей? так что мы улучшаем производительность sql.

Ответы [ 2 ]

4 голосов
/ 11 сентября 2009

Нет *. Это не было необходимо с версии Oracle 6, в которой был оптимизатор на основе правил (RBO).

(* если вы не углубляетесь в темы расширенной настройки и не нуждаетесь в подсказках, как уже упоминалось в других ответах)

Oracle 7 и далее имеет оптимизатор на основе затрат (CBO), который использует статистику для расчета того, что, по его мнению, будет наиболее эффективным способом выполнения запроса.

Поддержка RBO была удалена с 10g и далее

См .: http://www.dba -oracle.com / oracle_tips_10g_cbo.htm

0 голосов
/ 11 сентября 2009

Начиная с oracle 10g, нет , необходимо упорядочить таблицы в специальном порядке для повышения производительности.

Оптимизатор оценивает возможные пути соединения. Максимум ограничен OPTIMIZER_MAX_PERMUTATIONS . Но этот параметр устарел в oracle 11 .

Порядок важен, если вы работаете с подсказками. Посмотрите следующие ссылки для дальнейшего чтения.

Все ответы, приведенные выше, подходят для оракула старше 10 г.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...