Frage

Ich würde gerne wissen, ob es Regeln für die Reihenfolge von gibt INNER JOIN's in T-SQL 2000.

Ich hatte 62x die Aufführung auf meiner Frage, wenn meine INNER JOIN Diese Handlung wie ein Filter wird zunächst statt am Ende platziert.

In Bezug auf http://sql-4-life.blogspot.com/2009/03/order-of-inner-joins.html

War es hilfreich?

Lösung

Die optimale Sequenz (der Abfrageplan) wird vom Abfrage -Executor ermittelt, basierend auf dem SQL -Code (von Ihnen verwendete Operatoren), Datenstatistiken (statistische Verteilung der Werte in Spalten, Datenvolumen usw.) und Datenbankstruktur (Verfügbarkeit von Indizes, DataTypes usw.). Es gibt also Regeln, aber zuerst stehen nicht alle unter Ihrer Gesamtkontrolle und zweitens wird das Ergebnis durch eine Kombination vieler Faktoren bestimmt.

Um die Leistung zu bewerten, sollten Sie sich immer den geschätzten Abfrageplan ansehen und die Änderungen des Plans vergleichen, die durch die Änderungen in Ihrem SQL -Code verursacht werden, mit einem Abfrage schneller oder langsamer als ein anderer.

Andere Tipps

Die Reihenfolge, die Sie die Verknüpfungen schreiben, ist nicht relevant. Die meisten, wenn nicht alle Optimierer (und sicherlich SQL-Server-Optimierer) wissen das JOIN ist assoziativ und kommutativ.

Finden Sie den besten Ausführungsplan (was bedeutet, dass Sie den Vertragsauftrag, den Join -Algorithmus für jeden Join, die Wahl der zu verwendenden Indizes usw.), ein sehr schwieriges Problem, das genau das ist, was Abfragoptimierer für die Lösung entwickelt haben und verschiedene und komplexe Heuristiken und Techniken verwenden . Aber die Reihenfolge, die wir in unseren Fragen schreiben, wird nicht berücksichtigt, es sei denn, (vielleicht) als Ausgangspunkt.

Die Wahl zwischen den (möglicherweise Millionen oder Billionen) Möglichkeiten zur Bestellung der Verknüpfungen ist alles andere als trivial. Es ist, als würde man in einen Planeten mit einem Gelände voller Berggipfel und bodenloser Gruben geworfen, um den niedrigsten Punkt zu finden. Die Ausgangsposition hat vernachlässigbare Auswirkungen auf diese Suche, außer vielleicht in sehr komplexen Abfragen, bei denen der Optimierer unter Berücksichtigung aller möglichen Pläne offensichtlich nicht die Ewigkeit ausgeben kann.

Wenn ich mich nicht irre, Simuliertes Glühen ist eine der Heuristiken/Techniken, die von verwendet werden Der SQL Server -Abfrageoptimierer.
(Ich lag falsch)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top