Mysql
 sql >> Datenbank >  >> RDS >> Mysql

In welcher Reihenfolge werden MySQL JOINs ausgewertet?

  1. USING (fieldname) ist eine Abkürzung für ON table1.fieldname =table2.fieldname.

  2. SQL definiert nicht die "Reihenfolge", in der JOINS ausgeführt werden, da dies nicht der Natur der Sprache entspricht. Natürlich muss in der Anweisung eine Reihenfolge angegeben werden, aber ein INNER JOIN kann als kommutativ angesehen werden:Sie können sie in beliebiger Reihenfolge auflisten und Sie erhalten dieselben Ergebnisse.

    Das heißt, wenn ich einen SELECT ... JOIN konstruiere, insbesondere einen, der LEFT JOINs enthält, habe ich festgestellt, dass es sinnvoll ist, den dritten JOIN so zu betrachten, dass er die neue Tabelle mit den Ergebnissen des ersten JOIN verbindet, und den vierten JOIN als Join der Ergebnisse des zweiten JOIN usw.

    Seltener kann die angegebene Reihenfolge das Verhalten des Abfrageoptimierers beeinflussen, da sie die Heuristik beeinflusst.

  3. Nein. Die Art und Weise, wie die Abfrage zusammengestellt wird, erfordert, dass Unternehmen und Benutzer beide eine Firmen-ID haben, Jobs eine Benutzer-ID und eine Job-ID und Benutzerkonten eine Benutzer-ID haben. Allerdings nur eines der Unternehmen oder Der Benutzer benötigt eine Benutzer-ID, damit JOIN funktioniert.

  4. Die WHERE-Klausel filtert das gesamte Ergebnis – d. h. alle JOIN-Spalten – unter Verwendung einer Spalte, die von der Jobs-Tabelle bereitgestellt wird.