Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

всегда ли loop join хорош только для маленьких наборов?

$
0
0
везде написано, что когда речь идет о больших табличках, то лууп проигрывает merge и hash.
к примеру
http://www.t-sql.ru/post/JoinHints.aspx
автор
Loop Join

Соединение LOOP JOIN, называемое также nested iteration, использует одну таблицу в качестве внешней (на графическом плане она является верхней), а второй в качестве внутренней (нижней). LOOP JOIN построчно сравнивает внешнюю таблицу с внутренней. В цикле для каждой внешней строки производится сканирование внутренней таблицы и выводятся совпадающие строки.

В простейшем случае во время поиска целиком сканируется таблица или индекс (naive nested loops join). Если при поиске используется индекс, то такой поиск называется index nested loops join. Если индекс создается в качестве части плана запроса (и уничтожается после завершения запроса), то он называется temporary index nested loops join. Оптимизатор сам выбирает один из этих поисков.

LOOP JOIN является особенно эффективным в случае, когда внешняя таблица сравнительно невелика, а внутренняя гораздо больше и для неё существуют индексы. В запросах с небольшим объёмом строк, index nested loops join превосходит как MERGE JOIN, так и HASH JOIN. Однако в больших запросах LOOP JOIN часто являются не лучшим вариантом.


но вот сейчас наблюдаю ровно обратное:

в одном маленьком наборе 30 записей, во втором очень много... но для каждой из 30 в индексе большой лежит последовательные 40к.
Сервер в качестве внешней берет 30 записей, и для каждой выгребает (пачкой) 40к. Это все чудо паралелится и обходит со свистом Merge и Hash.


Так всегда, или от сервера зависит? какие-то супер умные префетчи, к примеру.
всегда боялся луп джоинов на жирных таблицах, а выходи что зря....

Microsoft SQL Server 2014 (SP2-GDR) (KB3194714) - 12.0.5203.0 (X64) 
	Sep 23 2016 18:13:56 
	Copyright (c) Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

Viewing all articles
Browse latest Browse all 7251

Trending Articles