29

2つのselect結合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;

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

4

4 に答える 4

30

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

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

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

于 2012-07-18T03:35:34.313 に答える
3

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

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

他の人がすでに述べているように、内部結合構文は読者にとってより簡単であるため、好ましいです。

于 2012-07-18T04:18:18.097 に答える
0

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

于 2012-07-18T03:35:16.837 に答える
0

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

于 2012-07-18T03:35:53.167 に答える