везде написано, что когда речь идет о больших табличках, то лууп проигрывает merge и hash.
к примеру
http://www.t-sql.ru/post/JoinHints.aspx
но вот сейчас наблюдаю ровно обратное:
в одном маленьком наборе 30 записей, во втором очень много... но для каждой из 30 в индексе большой лежит последовательные 40к.
Сервер в качестве внешней берет 30 записей, и для каждой выгребает (пачкой) 40к. Это все чудо паралелится и обходит со свистом 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)