Ist es wahr, dass egal welche Art von Join Sie verwenden, wenn Ihre WHERE-Klausel die fk einer Tabelle pk = andere Tabelle überprüft, wird es gleich wie ein innerer Join, solange die Ergebnismenge übereinstimmt? Mit anderen Worten, wenn Ihre SQL-Abfrage einige Sachen wie hat:Stimmt es, dass alle Arten von Joins auf innere Joins reduziert werden, wenn die Tabelle pk = andere Tabellen fk überprüft?
"Wählen Sie ... von A Links Join B On (...) E, F Volle Äußere Join G auf (A.pk = G.fk) ... WHERE A.pk = G.fk und A.pk = B.fk und etc ... "
In der obigen Abfrage ist A linksbündig mit B, während G äußerlich mit A verbunden ist auf seinem fk. Da die where-Klausel jedoch die beiden Überprüfungen enthält, reduziert sich die gesamte Abfrage auf Folgendes:
"Wählen ... aus A INNER JOIN B Ein (...) E, F INNER Join G on (A.pk = G.fk) ... WO usw. ... " ? Der Grund für die Abfrage dieser Abfrage ist, dass ich viele kartesische Joins zusammen mit where-Klauseln, die auf einer Tabelle sind, haben, die die Abfrage verlangsamen. Ich habe daran gedacht, die kartesischen Produkte entweder durch Linke Joins zu ersetzen oder um alle Where-Klauseln oder alle Inner Joins zu behalten.
auch etw wie diese entspricht: „auswählen ... Von A Inner Join B auf (A.id = B.a_id), C, D, F, wo A. id = F.id " zu: " Wählen Sie ... Von einem inneren Join B auf (A.id = B.a_id), C, D INNER JOIN F auf A.id = F.a_id " Eigentlich ist die Hauptfrage, dass F eine Verknüpfung nicht mit D hat, aber mit A, und A tritt viel früher im Ausdruck auf, also funktioniert die Inner Join korrekt, um die beiden Fälle zu reduzieren, um dieselbe Ergebnismenge zurückzugeben? – umar