Heim >Datenbank >MySQL-Tutorial >SQL-Joins: Was sind die Leistungs- und Syntaxunterschiede zwischen USING, ON und WHERE?
SQL JOIN-Methoden: Leistungs- und Syntaxunterschiede von USING, ON und WHERE
SQL bietet mehrere Optionen zum Verknüpfen von Tabellen: USING, ON und WHERE. Obwohl die Funktionalität dieser Optionen ähnlich ist, kann es zu Missverständnissen hinsichtlich ihrer Leistung und syntaktischen Bedeutung kommen. In diesem Artikel werden die Unterschiede zwischen diesen Verbindungsmethoden untersucht.
Leistung
Entgegen der landläufigen Meinung gibt es keine signifikanten Leistungsunterschiede zwischen den drei Verbindungsmethoden. Alle drei Methoden erzeugen denselben optimierten Abfrageplan.
Syntax und Semantik
ANSI-Syntax:
USING-Syntax:
Mehrdeutigkeit von „dem Wo beitreten“ (implizites INNER JOIN)
Die Verwendung einer WHERE-Klausel zur Angabe von Join-Bedingungen kann zu Mehrdeutigkeiten führen, insbesondere bei Outer-Join-Typen. Das Problem ergibt sich aus der logischen Abfrageverarbeitungsreihenfolge in SQL Server, bei der FROM vor WHERE ausgewertet wird. „Join the where“ kann versehentlich ein kartesisches Produkt erstellen oder zu unerwarteten Ergebnissen führen.
Grammatische Mehrdeutigkeit:
Die folgenden beiden Abfragen veranschaulichen die Syntaxmehrdeutigkeiten, die auftreten können, wenn implizite innere Verknüpfungen in der WHERE-Klausel mit expliziten äußeren Verknüpfungen in der FROM-Klausel gemischt werden:
<code class="language-sql">FROM T1, T2, T3 WHERE T1.ID = T2.ID AND T1.foo = 'bar' AND T2.fish = 42 FROM T1 INNER JOIN T2 ON T1.ID = T2.ID INNER JOIN T3 ON T1.ID = T3.ID WHERE T1.foo = 'bar' AND T2.fish = 42</code>
Die Mehrdeutigkeit entsteht durch die Unfähigkeit, klar zu bestimmen, welche Verbindungen äußerlich und welche innerlich sind.
Empfehlung:
Aus Gründen der Klarheit, Konsistenz und Kompatibilität mit modernen SQL-Standards wird Folgendes empfohlen:
Das obige ist der detaillierte Inhalt vonSQL-Joins: Was sind die Leistungs- und Syntaxunterschiede zwischen USING, ON und WHERE?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!