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.
-
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 denJOIN
erfüllt und dasWHERE
Bedingungen. -
MERGE
sortiert beide Tabellen, durchläuft sie in der Sortierreihenfolge und überspringt die nicht übereinstimmenden Datensätze. Am schnellsten für denFULL JOIN
s und wenn beide Datensätze bereits sortiert sind (von vorherigen Sortiervorgängen oder wenn der Index-Zugriffspfad verwendet wird) -
HASH
Erstellen Sie eine Hash-Tabelle im temporären Speicher (Speicher odertempdb
) 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 mitWHERE
übereinstimmt undJOIN
Zustand.