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

回答編集履歴

3

修正

2015/11/23 21:35

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -13,22 +13,8 @@
13
13
  )
14
14
  );
15
15
  ```
16
- ```sql
17
- /* もしくは */
18
- SELECT *
19
- FROM members m
20
- WHERE EXISTS (
21
- SELECT *
22
- FROM sales s
23
- WHERE m.member_id = s.member_id
24
- )
25
- AND sale > (
26
- SELECT avg(sale)
27
- FROM sales
28
- );
29
- ```
30
16
  これでも動作するんじゃないかと思います。
31
- しかしサブクエリをネスト(or多用)すると重いと聞きますので、アナライズは行った方が良いかも知れません。
17
+ しかしサブクエリをネストすると重いと聞きますので、アナライズは行った方が良いかも知れません。
32
18
  ※実質最下層のサブクエリは固定値の取得だけなので、existsが速いかjoinが速いかという話になりそうですが…。
33
19
  私ならKiyoshiMotokiさんが書かれたコードのようにjoinを使うと思います。
34
20
  コードの可読性もそちらのほうが良いですし、売り上げデータを付けたくなってもjoinのほうなら簡単に対応できます。

2

表現修正

2015/11/23 21:35

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -28,7 +28,7 @@
28
28
  );
29
29
  ```
30
30
  これでも動作するんじゃないかと思います。
31
- しかしサブクエリをネストすると重いと聞きますので、アナライズは行った方が良いかも知れません。
31
+ しかしサブクエリをネスト(or多用)すると重いと聞きますので、アナライズは行った方が良いかも知れません。
32
32
  ※実質最下層のサブクエリは固定値の取得だけなので、existsが速いかjoinが速いかという話になりそうですが…。
33
33
  私ならKiyoshiMotokiさんが書かれたコードのようにjoinを使うと思います。
34
34
  コードの可読性もそちらのほうが良いですし、売り上げデータを付けたくなってもjoinのほうなら簡単に対応できます。

1

追記

2015/11/23 21:34

投稿

hirohiro
hirohiro

スコア2068

answer CHANGED
@@ -13,6 +13,20 @@
13
13
  )
14
14
  );
15
15
  ```
16
+ ```sql
17
+ /* もしくは */
18
+ SELECT *
19
+ FROM members m
20
+ WHERE EXISTS (
21
+ SELECT *
22
+ FROM sales s
23
+ WHERE m.member_id = s.member_id
24
+ )
25
+ AND sale > (
26
+ SELECT avg(sale)
27
+ FROM sales
28
+ );
29
+ ```
16
30
  これでも動作するんじゃないかと思います。
17
31
  しかしサブクエリをネストすると重いと聞きますので、アナライズは行った方が良いかも知れません。
18
32
  ※実質最下層のサブクエリは固定値の取得だけなので、existsが速いかjoinが速いかという話になりそうですが…。