回答編集履歴
14
推敲
test
CHANGED
@@ -54,6 +54,6 @@
|
|
54
54
|
|
55
55
|
この例での主なチューニングは条件部分のSQLになります。
|
56
56
|
|
57
|
-
状況によって相関によるExistsを使用するなどもありますが、条件として分離できてい
|
57
|
+
状況によって相関によるExistsを使用するなどもありますが、条件として分離できていますから、
|
58
58
|
|
59
59
|
駆動表が団体であるので、サブクエリーではなく、join してwhere条件とする方が良いかと思います。
|
13
訂正
test
CHANGED
@@ -26,17 +26,15 @@
|
|
26
26
|
|
27
27
|
質問の内容で考えると以下の様になります。
|
28
28
|
|
29
|
-
※団体IDが団体のプライマリーだと想定。
|
29
|
+
※団体IDが団体のプライマリーだと想定。
|
30
30
|
|
31
31
|
```SQL
|
32
32
|
|
33
33
|
SELECT 出したい項目1, 出したい項目2,・・・
|
34
34
|
|
35
|
-
FROM 団体
|
35
|
+
FROM 団体
|
36
36
|
|
37
|
-
on t1.団体ID=t2.団体ID
|
38
|
-
|
39
|
-
WHERE
|
37
|
+
WHERE 団体ID IN ( -- 条件用SQL
|
40
38
|
|
41
39
|
SELECT distinct t1.団体ID
|
42
40
|
|
12
追記
test
CHANGED
@@ -56,4 +56,6 @@
|
|
56
56
|
|
57
57
|
この例での主なチューニングは条件部分のSQLになります。
|
58
58
|
|
59
|
-
状況によって相関によるExistsを使用するなど
|
59
|
+
状況によって相関によるExistsを使用するなどもありますが、条件として分離できているますから、
|
60
|
+
|
61
|
+
駆動表が団体であるので、サブクエリーではなく、join してwhere条件とする方が良いかと思います。
|
11
追記
test
CHANGED
@@ -24,7 +24,9 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
質問の内容で考えると以下の様になります。
|
27
|
+
質問の内容で考えると以下の様になります。
|
28
|
+
|
29
|
+
※団体IDが団体のプライマリーだと想定。冗長さの例として取得部分に作品も追加しています。
|
28
30
|
|
29
31
|
```SQL
|
30
32
|
|
10
追記
test
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
on t1.団体ID=t2.団体ID
|
36
36
|
|
37
|
-
WHERE t1.団体ID IN (
|
37
|
+
WHERE t1.団体ID IN ( -- 条件用SQL
|
38
38
|
|
39
39
|
SELECT distinct t1.団体ID
|
40
40
|
|
9
推敲
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
表示を目的とする場合に、お薦めしたいSQLの組み立て方は、
|
1
|
+
**表示を目的**とする場合に、お薦めしたいSQLの組み立て方は、
|
2
2
|
|
3
3
|
・条件は取得したい集合の駆動表のプライマリーキーだけにする
|
4
4
|
|
8
追記
test
CHANGED
@@ -51,3 +51,7 @@
|
|
51
51
|
ORDER BY 好きな並び順を記載
|
52
52
|
|
53
53
|
```
|
54
|
+
|
55
|
+
この例での主なチューニングは条件部分のSQLになります。
|
56
|
+
|
57
|
+
状況によって相関によるExistsを使用するなど。
|
7
追記
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
とはいえ、これが最速になる場合もあります。
|
22
22
|
|
23
|
-
取得と条件を分離する事によって、変更があっても極端な性能劣化となりにくいのです。
|
23
|
+
取得と条件を分離する事によって、取得や条件一方のみでのテーブル参照なども可能で、変更があっても極端な性能劣化となりにくいのです。
|
24
24
|
|
25
25
|
|
26
26
|
|
6
推敲
test
CHANGED
@@ -18,7 +18,9 @@
|
|
18
18
|
|
19
19
|
これは、苦労してチューニングを行った後の変更で、また苦労のやり直しになる事を改善する目的で行き着いた、**最速ではなく安定を目的**としたものです。
|
20
20
|
|
21
|
+
とはいえ、これが最速になる場合もあります。
|
22
|
+
|
21
|
-
|
23
|
+
取得と条件を分離する事によって、変更があっても極端な性能劣化となりにくいのです。
|
22
24
|
|
23
25
|
|
24
26
|
|
5
追記
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
これは、苦労してチューニングを行った後の変更で、また苦労のやり直しになる事を改善する目的で行き着いた、**最速ではなく安定を目的**としたものです。
|
20
20
|
|
21
|
-
※とはいえ、
|
21
|
+
※とはいえ、これが最速になる場合もあります。変更があっても極端な性能劣化となりにくいのです。
|
22
22
|
|
23
23
|
|
24
24
|
|
4
推敲
test
CHANGED
@@ -17,6 +17,8 @@
|
|
17
17
|
|
18
18
|
|
19
19
|
これは、苦労してチューニングを行った後の変更で、また苦労のやり直しになる事を改善する目的で行き着いた、**最速ではなく安定を目的**としたものです。
|
20
|
+
|
21
|
+
※とはいえ、MySQL以外ではこれが最速になるものもありますが。
|
20
22
|
|
21
23
|
|
22
24
|
|
3
追記
test
CHANGED
@@ -13,6 +13,10 @@
|
|
13
13
|
また、条件をプライマリーキーのみとする事により、取得したい集合と条件の集合に分離されるので、チューニングも施しやすくなります。
|
14
14
|
|
15
15
|
勿論、取得する集合と条件の集合を分離するので、冗長さを感じる記述にはなりますが、安定した抽出速度を得る事が出来ます。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
これは、苦労してチューニングを行った後の変更で、また苦労のやり直しになる事を改善する目的で行き着いた、**最速ではなく安定を目的**としたものです。
|
16
20
|
|
17
21
|
|
18
22
|
|
2
加筆
test
CHANGED
@@ -22,13 +22,15 @@
|
|
22
22
|
|
23
23
|
SELECT 出したい項目1, 出したい項目2,・・・
|
24
24
|
|
25
|
-
FROM 団体
|
25
|
+
FROM 団体 t1 left join 作品 t2
|
26
26
|
|
27
|
+
on t1.団体ID=t2.団体ID
|
28
|
+
|
27
|
-
WHERE 団体ID IN (
|
29
|
+
WHERE t1.団体ID IN (
|
28
30
|
|
29
31
|
SELECT distinct t1.団体ID
|
30
32
|
|
31
|
-
FROM 団体 t1
|
33
|
+
FROM 団体 t1 left join 作品 t2
|
32
34
|
|
33
35
|
on t1.団体ID=t2.団体ID
|
34
36
|
|
1
推敲
test
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
お薦めしたいSQLの組み立て方は、
|
1
|
+
表示を目的とする場合に、お薦めしたいSQLの組み立て方は、
|
2
2
|
|
3
3
|
・条件は取得したい集合の駆動表のプライマリーキーだけにする
|
4
4
|
|
5
5
|
です。
|
6
|
+
|
7
|
+
|
6
8
|
|
7
9
|
|
8
10
|
|