Ich habe zwei Select Join SQL-Anweisungen:
select a.id from table_a as a, table_b as b where a.id=b.id;
select a.id from table_a as a inner join table_b as b on a.id=b.id;
Offensichtlich sind sie im Ergebnis gleich. Gibt es jedoch einen Unterschied zwischen ihnen, wie z. B. Leistung, Portabilität?.
Ein Unterschied besteht darin, dass die erste Option die Absicht verbirgt, indem sie die Join-Bedingung in der where-Klausel ausdrückt.
Die zweite Option, bei der die Verknüpfungsbedingung ausgeschrieben ist, ist für den Benutzer, der die Abfrage liest, klarer. Es zeigt die genaue Absicht der Abfrage.
Was die Leistung oder einen anderen Unterschied betrifft, sollte es keinen geben. Beide Abfragen sollten genau dasselbe Ergebnis zurückgeben und unter den meisten RDBMS dasselbe ausführen.
Die innere Verknüpfungssyntax wurde in den 90er Jahren zu SQL hinzugefügt. Es ist möglich, aber unwahrscheinlich, dass der Optimierer damit bessere Ergebnisse erzielen kann als mit der alten Syntax, in der die where-Klausel für die Join-Bedingung verwendet wurde.
Sie sollten beide in hohem Maße portabel sein, wie es jetzt der Fall ist.
Die innere Verknüpfungssyntax ist vorzuziehen, da sie für den Leser einfacher ist, wie andere bereits bemerkt haben.
Beide sind Standard-SQL. Unterschiedliche DB-Systeme können sie unterschiedlich optimieren, aber weil sie so einfach sind, wäre ich ein wenig überrascht, wenn sie dies tun. Aber das ist die Natur von SQL: Es ist deklarativ, was der Implementierung viel Spielraum bei der Ausführung Ihrer Abfrage gibt. Es gibt keine Garantie, dass diese die gleiche Leistung erbringen, oder, falls sie unterschiedlich sind, eine schnellere.
Sie sind in SQL Server genau gleich. Es gibt keinen Leistungsunterschied.