Ist CROSS JOIN ein synonym für INNER JOIN ohne ON-Klausel?
Frage ich mich, ob CROSS JOIN
sicher sein kann, ersetzt mit INNER JOIN
in jeder Abfrage, wenn es gefunden wird.
Ist ein INNER JOIN
ohne ON
oder USING
genau das gleiche wie CROSS JOIN
? Wenn ja, hat die CROSS JOIN
Art erfunden wurde, nur auf ausdrücklichen Absicht besser in einer Abfrage?
Einem Anhang zu dieser Frage wäre:
Kann es einen Unterschied mit der modernen und weit verbreiteten DBMS bei der Verwendung CROSS JOIN ... WHERE x
INNER JOIN ... ON ( x )
oder INNER JOIN ... WHERE ( x )
?
Danke.
InformationsquelleAutor der Frage Benoit | 2011-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
In allen modernen Datenbanken alle diese Konstrukte sind optimiert, um den gleichen plan.
Einige Datenbanken (wie
SQL Server
) erfordern eineON
Zustand nach derINNER JOIN
so dass Ihre Dritten Abfrage wird nicht nur analysiert es.Sichtbarkeit Umfang der Tabellen ist in der
JOIN
um, so dass diese Abfrage:nicht analysieren, während diese ein:
wird.
InformationsquelleAutor der Antwort Quassnoi
Einer raw-cross-join ist eine, die keine where-Klausel, was bedeutet, dass ein Datensatz erzeugt für jede Kombination der linken und rechten Tabellen, die verbunden werden mit Nullen eingefügt, wo es keine linken oder rechten Seite die Daten.
Wenn Sie eine where-Klausel hinzufügen, um einen cross join-das macht es äquivalent zu einem inner join wie die where-Klausel gilt das gleiche, wie die in der inner-join.
Jedoch inner joins sind in der Regel schöner zu benutzen, als dies trennt die Bedingung entfernt vom rest der where-Klauseln machen es leichter zu verstehen.
InformationsquelleAutor der Antwort Chris Snowden