web-dev-qa-db-ja.com

内部結合と選択結合SQLステートメントのどこが違うか

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;

明らかに、結果は同じです。しかし、パフォーマンスや移植性など、それらの間に違いはありますか?.

27
爱国者

1つの違いは、最初のオプションは、where句で結合条件を表現することによってインテントを隠すことです。

結合条件が書き出される2番目のオプションは、クエリを読み取るユーザーにとってより明確です。これは、クエリの正確な意図を示します。

パフォーマンスやその他の違いについては、何もありません。ほとんどのRDBMSでは、どちらのクエリでもまったく同じ結果が返され、同じように実行されます。

24
Icarus

内部結合構文は、1990年代にSQLに追加されました。可能性は高いですが、結合条件にwhere句を使用していた古い構文よりも、オプティマイザの方が優れている場合があります。

現在のように、どちらも移植性が高いはずです。

内部結合構文は、他の人がすでに述べているように、読み手にとってより簡単であるため、推奨されます。

3
Walter Mitty

どちらも標準SQLです。 DBシステムが異なれば、最適化も異なる場合がありますが、非常に単純であるため、最適化を行うと少し驚きます。しかし、それがSQLの性質です。SQLは宣言型であるため、クエリの実行方法に大幅な余裕があります。これらが同じように動作するか、異なる場合は高速であるという保証はありません。

0
Ned Batchelder

それらはSQLサーバーでもまったく同じです。パフォーマンスの違いはありません。

0
Bishnu Paudel