teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

質問内容に合わせて再修正

2015/09/01 12:46

投稿

hy3
hy3

スコア600

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  理想論で言えば、table_aのカラムがメインでtable_bを絞込み条件としてのみ見る場合はEXISTSを使いたくなります。
2
2
  逆に、table_b固有のカラムに興味があるようなクエリを書く場合はJOINを使います。
3
- やりたいことを自然表現でき方を選ぶのであってそういう意味はどっち派でもないですね。
3
+ 質問タイトルは前者該当すと思うので、EXISTSの方が好みですね。
4
4
 
5
5
  後は使うDBMSの特性とパフォーマンス要件次第です。
6
6
  よく話題にあがる例で言えばMySQL(特に古いバージョン)は相関サブクエリがどうしても遅くなるので、JOINに寄る事が多いです。最終的には実行計画と測定結果を見て決める話ですが。

2

表現を微修正

2015/09/01 12:46

投稿

hy3
hy3

スコア600

answer CHANGED
@@ -1,4 +1,4 @@
1
- 理想論で言えば、質問の例はあくまでもtable_aのカラムを扱いたいのあって、table_b絞込み条件としてのみ活用しているようにので、EXISTSを使いたくなります。
1
+ 理想論で言えば、table_aのカラムがメインでtable_b絞込み条件としてのみ見る場合はEXISTSを使いたくなります。
2
2
  逆に、table_b固有のカラムに興味があるようなクエリを書く場合はJOINを使います。
3
3
  やりたいことを自然に表現できる方を選ぶのであって、そういう意味ではどっち派でもないですね。
4
4
 

1

追記

2015/09/01 12:44

投稿

hy3
hy3

スコア600

answer CHANGED
@@ -5,4 +5,5 @@
5
5
  後は使うDBMSの特性とパフォーマンス要件次第です。
6
6
  よく話題にあがる例で言えばMySQL(特に古いバージョン)は相関サブクエリがどうしても遅くなるので、JOINに寄る事が多いです。最終的には実行計画と測定結果を見て決める話ですが。
7
7
 
8
- 月並みな回答ですね・・・。
8
+ 月並みな回答ですね・・・。
9
+ 私も色々な方の回答が気になります!