Если у вас есть причины принуждая слияния присоединиться к более вложенных циклов, я бы не рекомендовал делать это ..
SQLServer внутренне реализует присоединяется в качестве трех операторов
1.Nested петли
2.Hash
3.Merge
EAC h имеет свои преимущества и не может сказать, что одно соединение лучше, чем другое. SQL может выбрать любое соединение, основанное на многих факторах, и в целом он выбирает план с меньшими затратами ...
Приходит к вашему вопросу , в соответствии с Документах ..
вложенных циклов будет выбран, когда ..
Если один вход присоединиться к небольшой (менее 10 строк), а другой вход присоединиться к довольно большой и индексированных по его присоединиться столбцы, объединение вложенных циклов с индексом - это самая быстрая операция соединения, поскольку они требуют наименьшего ввода-вывода и наименьших сравнений.
Также MSDN объясняет случаи, когда вложенный цикл является эффективным ..
A вложенных циклов является особенно эффективным, если внешним вход мал и внутренний вход preindexed и большим. Во многих небольших транзакциях, таких как те, которые влияют только на небольшой набор строк, объединение вложенных циклов индексов превосходит как объединения слияния, так и объединения хэшей.
Так что, если вы не заставляете намек и инженер данные таким образом, SQL выбирает слияние join..Merge присоединиться не представляется возможным в вашем случае
Ссылки:
https://msdn.microsoft.com/en-us/library/ms191426(v=sql.100).aspx
Почему вы хотите заменить вложенную петлю с объединением присоединения? Пусть SQL Server решит, какая операция соединения лучше всего подходит для ваших данных. –
Если у меня много данных в tb2 или tb1., То оценочное количество выполнения, увеличивающееся, зависит от того, сколько данных имеет tb1 или tb2. –
Убедитесь, что индексы не фрагментированы, статистика обновлена, и запросы должны выполняться просто отлично. –