Когда я должен использовать INNER -LOOP- JOIN вместо INNER JOIN - PullRequest
26 голосов
/ 30 июня 2011

Сегодня я узнал о том, что в SQL Server называется INNER LOOP JOIN.

Что это значит?(Google не помогает ... или я должен сказать ... сообщения в блоге об этом немного ... технические и поражают воображение).

Кроме того, каковы некоторые распространенные сценарии, которые были бы хорошимиидея использовать INNER LOOP JOIN над стандартным INNER JOIN?

Ответы [ 2 ]

24 голосов
/ 30 июня 2011

LOOP |ХЭШ |MERGE - это подсказки соединения, указывающие, что в соединении в запросе должны использоваться циклы, хэширование или слияние.Использование LOOP | HASH |MERGE JOIN обеспечивает конкретное соединение между двумя таблицами.LOOP нельзя указывать вместе с RIGHT или FULL как тип соединения.

Вы всегда должны использовать INNER JOIN.Пусть оптимизатор запросов решит, хочет ли он выполнить соединение LOOP, MERGE или HASH.Почти во всех случаях оптимизатор будет принимать более правильное решение.Какой из них будет использован и когда его можно будет найти в моей презентации http://sqlbits.com/Sessions/Event4/Understanding_Graphical_Execution_Plans.

8 голосов
/ 30 июня 2011

То, на что вы ссылаетесь, является подсказкой для присоединения .Как и другие подсказки, подсказки о соединении следует указывать только в качестве крайней меры, поскольку в большинстве случаев сервер SQL выбирает правильный алгоритм.Хорошая статья, чтобы объяснить некоторые из них это это .

...