Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL SERVER 2008 JOIN-Hinweise

Weil dies dem Optimierer die Möglichkeit nimmt, andere Methoden in Betracht zu ziehen, die effizienter sein können.

Wenn die Datenverteilung (auf der der Optimierer seine Entscheidungen trifft) stark verzerrt ist und die Statistiken dies nicht korrekt darstellen können.

Dies sind verschiedene Algorithmen.

  1. LOOP ist verschachtelte Schleifen:Für jeden Datensatz aus der äußeren Tabelle wird die innere Tabelle nach Übereinstimmungen durchsucht (unter Verwendung des Index of available). Am schnellsten, wenn nur ein winziger Teil der Datensätze aus beiden Tabellen den JOIN erfüllt und das WHERE Bedingungen.

  2. MERGE sortiert beide Tabellen, durchläuft sie in der Sortierreihenfolge und überspringt die nicht übereinstimmenden Datensätze. Am schnellsten für den FULL JOIN s und wenn beide Datensätze bereits sortiert sind (von vorherigen Sortiervorgängen oder wenn der Index-Zugriffspfad verwendet wird)

  3. HASH Erstellen Sie eine Hash-Tabelle im temporären Speicher (Speicher oder tempdb ) aus einer der Tabellen und durchsucht sie nach jedem Datensatz aus der anderen. Am schnellsten, wenn der große Teil der Datensätze aus beiden Tabellen mit WHERE übereinstimmt und JOIN Zustand.