Der Effekt des Ausgebens eines inneren Joins entspricht dem Angeben eines Kreuz-Join mit der Join-Bedingung in der WHERE-Klausel. Ich habe festgestellt, dass viele Leute in meinem Unternehmen Cross Joins verwenden, wo ich interne Joins verwenden würde. Ich habe keinen signifikanten Leistungszuwachs bemerkt, nachdem ich einige dieser Abfragen geändert hatte, und ich fragte mich, ob es nur ein Zufall war oder ob das DBMS solche Probleme transparent optimiert (in unserem Fall MySql). Und hier ein konkretes Beispiel für die Diskussion:Leistung von innerem Join im Vergleich zu Kreuz Join
SELECT User.*
FROM User, Address
WHERE User.addressId = Address.id;
SELECT User.*
FROM User
INNER JOIN Address ON (User.addressId = Address.id);
Die erste ist nicht ANSI SQL. Ich weiß, dass Microsoft empfohlen hat, zu der Syntax Ihres zweiten Beispiels zu wechseln. MySQL kann jetzt dasselbe tun, wenn sie Unternehmen sind. Auch das erste ist kein Cross-Join. Ein Cross-Join wäre, wenn Sie die WHERE-Klausel weggelassen haben. – WakeUpScreaming
Warum ist es nicht ANSI SQL? – soulmerge
Die Querverknüpfung, die Sie aufrufen, ist eine ältere Syntax. Wir Dinosaurier :) neigen dazu, es zu benutzen. Die innere Join-Syntax wurde als Teil des SQL 92 (IIRC) -Standards vereinbart. Seither haben sich die Anbieter auf die Unterstützung der meisten Anbieter hinbewegt, die beide unterstützen. Daher ist es nicht ANSI, weil es nicht in der Dokumentation ist. – Karl