Різниця між об'єднанням Hash, Merge і Loop?


40

У SQL Server ви можете вказати підказки про приєднання:

  • HASH ПРИЄДНАЙТЕСЬ
  • МЕРЕЖНЕ ПРИЄДНАЙТЕСЬ
  • LOOP ПРИЄДНАЙТЕСЬ

Яке визначення цих трьох підказок на приєднання, і коли їх слід використовувати?

Відповіді:


37

Від MSDN у темі Концепцій розширеної настройки запитів :

SQL Server використовує три типи операцій приєднання:

  • Вкладені вкладені петлі

  • Злиття приєднується

  • Хеш приєднується

Якщо один вхід об'єднання невеликий (менше 10 рядків), а інший вхід об'єднання досить великий і індексований на стовпчиках приєднання, індексований вкладення циклів - це найшвидша операція приєднання, оскільки вони вимагають найменшого вводу / виводу та найменшого порівняння. Для отримання додаткової інформації про вкладені петлі див. Розуміння вкладених циклів приєднань.

Якщо два входи об'єднання не малі, але їх сортують у стовпчику приєднання (наприклад, якщо вони були отримані шляхом сканування відсортованих індексів), об'єднання об'єднання є операцією швидкого приєднання. Якщо обидва входи об'єднання великі і два входи мають однаковий розмір, з'єднання об'єднання з попереднім сортуванням та хеш-з'єднанням мають однакову ефективність. Однак операції хеш-з'єднання часто набагато швидше, якщо два розміри вводу значно відрізняються один від одного. Для отримання додаткової інформації див. Розуміння об'єднань.

Хеш-з'єднання можуть ефективно обробляти великі, несортізовані, неіндексовані входи.

Але я вважаю, що ви повинні почати з більш основної теми: Настроювання запитів і нарешті перейти до використання підказок запитів.


5
Погоджено, введення підказки про приєднання слід залишати лише в крайньому випадку (іноді корисно, якщо оціночні дані суттєво відрізняються від фактичних даних).
Ендрю Бікертон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.