In SQL Server können Sie die Verknüpfungshinweise angeben:
- HASH JOIN
- MERGE JOIN
- LOOP JOIN
Wie sind diese drei Verknüpfungshinweise definiert und wann sollten sie verwendet werden?
In SQL Server können Sie die Verknüpfungshinweise angeben:
Wie sind diese drei Verknüpfungshinweise definiert und wann sollten sie verwendet werden?
Antworten:
In MSDN im Thema Erweiterte Abfrageoptimierungskonzepte :
SQL Server verwendet drei Arten von Verknüpfungsvorgängen:
Joins mit verschachtelten Schleifen
Verknüpfungen zusammenführen
Hash schließt sich an
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 wenigsten E / A-Vorgänge und die wenigsten Vergleiche erfordert. Weitere Informationen zu verschachtelten Schleifen finden Sie unter Grundlegendes zu Joins für verschachtelte Schleifen.
Wenn die beiden Join-Eingaben nicht klein sind, aber nach ihrer Join-Spalte sortiert sind (z. B. wenn sie durch Scannen sortierter Indizes erhalten wurden), ist ein Merge-Join die schnellste Join-Operation. 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-Verknüpfungsoperationen 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 schließlich die Verwendung der Abfragehinweise.