2つのselect join SQLステートメントがあります。
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;
明らかに、結果は同じです。しかし、パフォーマンスや移植性など、それらの間に違いはありますか?.
1つの違いは、最初のオプションは、where句で結合条件を表現することによってインテントを隠すことです。
結合条件が書き出される2番目のオプションは、クエリを読み取るユーザーにとってより明確です。これは、クエリの正確な意図を示します。
パフォーマンスやその他の違いについては、何もありません。ほとんどのRDBMSでは、どちらのクエリでもまったく同じ結果が返され、同じように実行されます。
内部結合構文は、1990年代にSQLに追加されました。可能性は高いですが、結合条件にwhere句を使用していた古い構文よりも、オプティマイザの方が優れている場合があります。
現在のように、どちらも移植性が高いはずです。
内部結合構文は、他の人がすでに述べているように、読み手にとってより簡単であるため、推奨されます。
どちらも標準SQLです。 DBシステムが異なれば、最適化も異なる場合がありますが、非常に単純であるため、最適化を行うと少し驚きます。しかし、それがSQLの性質です。SQLは宣言型であるため、クエリの実行方法に大幅な余裕があります。これらが同じように動作するか、異なる場合は高速であるという保証はありません。
それらはSQLサーバーでもまったく同じです。パフォーマンスの違いはありません。