Die Reihenfolge der Operationen hat erheblichen Einfluss auf die Ergebnisse von LEFT-, RIGHT- und FULL OUTER JOINs.
Kommutativität und Assoziativität: Nicht garantiert
a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id
ist nicht garantiert dasselbe wie:
a LEFT JOIN c ON c.ac_id = a.ac_id LEFT JOIN b ON b.ab_id = a.ab_id
Szenarien, in denen Ordnung entscheidend ist
Die Verknüpfungsreihenfolge ist entscheidend, wenn es um AND
Bedingungen geht, die NULL
Werte oder Funktionen betreffen, die auf NULLs
reagieren (wie COALESCE()
). Zum Beispiel:
a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id AND c.bc_id = b.bc_id
Diese Abfrage liefert ein anderes Ergebnis als:
a LEFT JOIN c ON c.ac_id = a.ac_id AND c.bc_id = b.bc_id LEFT JOIN b ON b.ab_id = a.ab_id
Im Gegensatz zu Outer-Joins hat die Reihenfolge von INNER JOINs keinen Einfluss auf die endgültige Ergebnismenge. A JOIN B
und B JOIN A
führen zu identischen Ergebnissen (vorausgesetzt, entsprechende Anpassungen der SELECT
-Klausel, z. B. SELECT a.*, b.*, c.*
).
Das obige ist der detaillierte Inhalt vonBeeinflusst die Verknüpfungsreihenfolge die Ergebnisse von SQL-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!