Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist der Unterschied zwischen der Verwendung eines Cross Joins und dem Setzen eines Kommas zwischen den beiden Tabellen?

Sie geben die gleichen Ergebnisse zurück, weil sie semantisch identisch sind. Dies:

select * 
  from A, B

...ist (zwinkert) ANSI-89-Syntax. Ohne eine WHERE-Klausel zum Verknüpfen der Tabellen ist das Ergebnis ein kartesisches Produkt. Genau das bietet die Alternative auch:

    select * 
      from A 
cross join B

...aber CROSS JOIN ist ANSI-92-Syntax.

Über Leistung

Es gibt keinen Leistungsunterschied zwischen ihnen.

Warum ANSI-92 verwenden?

Der Grund für die Verwendung der ANSI-92-Syntax ist die OUTER JOIN-Unterstützung (IE:LEFT, FULL, RIGHT) - die ANSI-89-Syntax hat keine, so dass viele Datenbanken ihre eigene implementiert haben (die nicht auf andere Datenbanken portiert wird). ). IE:Oracles (+) , =* von SQL Server