Es gibt keinen "besseren" oder "schlechteren" Join-Typ. Sie haben unterschiedliche Bedeutungen und müssen abhängig davon verwendet werden.
In Ihrem Fall haben Sie wahrscheinlich keine Mitarbeiter ohne work_log (keine Zeilen in dieser Tabelle), LEFT JOIN
und JOIN
die Ergebnisse sind gleichwertig. Wenn Sie jedoch so etwas hätten (ein neuer Mitarbeiter ohne registriertes work_log), würde ein JOIN
Wold diesen Mitarbeiter weglassen, während ein linker Join (dessen erste Tabelle Mitarbeiter ist) alle anzeigen würde und Nullen in den Feldern von work_log, falls vorhanden sind keine Übereinstimmungen.
Auch hier spielt die Leistung eine untergeordnete Rolle bei der Abfrage der Korrektheit. Einige Leute sagen, dass Sie LEFT JOIN
s nicht verwenden sollten . Es ist richtig, dass ein LEFT JOIN den Optimierer zwingt, die Abfrage in einer bestimmten Reihenfolge auszuführen, wodurch in einigen Fällen einige Optimierungen (Tabellenumordnung) verhindert werden. Hier ist ein Beispiel . Aber Sie sollten nicht eins über das andere wählen, wenn Korrektheit / Bedeutung geopfert wird, da ein INNER JOIN nicht von Natur aus schlechter ist. Die restlichen üblichen Optimierungen gelten wie gewohnt.
Zusammenfassend nicht verwenden, LEFT JOIN
wenn Sie wirklich meinen INNER JOIN
.
In MySQL CROSS JOIN
, INNER JOIN
und JOIN
sind gleich. Im Standard und semantisch, eine CROSS JOIN
ist eine INNER JOIN
ohne eine ON
Klausel, so dass Sie jede Kombination von Zeilen zwischen den Tischen zu bekommen.
Sie haben Beispiele für alle semantischen Join-Typen auf Wikipedia . In der Praxis schreiben wir in MySQL nur JOIN
und LEFT JOIN
.
JOIN
impliziert unqualifiziertes SchreibenINNER JOIN
Welcher Join ist leistungsfähiger, wenn alle das gleiche Ergebnis liefern?
Ich füge die vorherige Antwort hinzu, soweit ich weiß, ist MySQL optimiert, um die gleiche Leistung zu erzielen.
Bei guten Indizes ist beispielsweise die zu
JOIN
filternde vsLEFT JOIN
+WHERE
-Klausel dasselbe. Optimierung vs. menschliches Lesen ist bei großen Abfragen mit vielen Verknüpfungen sinnvoll.Die Verwendung guter Indizes und Caches ist wichtiger.
Eine gute Erklärung des Optimierungsprozesses finden Sie hier:
Der Abfrageoptimierungsprozess : Eine Abfrage kann häufig auf viele verschiedene Arten ausgeführt werden und das gleiche Ergebnis erzielen. Die Aufgabe des Optimierers besteht darin, die beste Option zu finden.
quelle