it-swarm-eu.dev

Unterschied zwischen Hash, Merge und Loop Join?

In SQL Server können Sie die Verknüpfungshinweise angeben:

  • HASH JOIN
  • ZUSAMMENFÜHREN JOIN
  • SCHLEIFE JOIN

Was ist die Definition dieser drei Verknüpfungshinweise und wann sollte jeder verwendet werden?

42

Von MSDN im Thema Advanced Query Tuning Concepts :

SQL Server verwendet drei Arten von Verknüpfungsvorgängen:

  • Verschachtelte Schleifen werden verbunden

  • Zusammenführungen verbinden

  • Hash tritt bei

Wenn eine Verknüpfungseingabe klein ist (weniger als 10 Zeilen) und die andere Verknüpfungseingabe ziemlich groß und in ihren Verknüpfungsspalten indiziert ist, ist eine Verknüpfung mit verschachtelten Indexschleifen die schnellste Verknüpfungsoperation, da sie die geringste E/A und die wenigsten Vergleiche erfordert. Weitere Informationen zu verschachtelten Schleifen finden Sie unter Grundlegendes zu Verknüpfungen verschachtelter Schleifen.

Wenn die beiden Verknüpfungseingaben nicht klein sind, sondern in ihrer Verknüpfungsspalte sortiert sind (z. B. wenn sie durch Scannen sortierter Indizes erhalten wurden), ist eine Zusammenführungsverbindung die schnellste Verknüpfungsoperation. Wenn beide Join-Eingaben groß und die beiden Eingaben ähnlich groß sind, bieten ein Merge-Join mit vorheriger Sortierung und ein Hash-Join eine ähnliche Leistung. Hash-Join-Operationen sind jedoch häufig viel schneller, wenn sich die beiden Eingabegrößen erheblich voneinander unterscheiden. Weitere Informationen finden Sie unter Grundlegendes zu Zusammenführungsverknüpfungen.

Hash-Joins können große, unsortierte, nicht indizierte Eingaben effizient verarbeiten.

Ich bin jedoch der Meinung, dass Sie mit einem grundlegenderen Thema beginnen sollten: Abfrageoptimierung und zuletzt die Abfragehinweise verwenden.

39
Marian