回答編集履歴
2
追記
test
CHANGED
@@ -7,3 +7,41 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
ただ、適切なインデックスと適切なSQLなら、秒は掛からないと思いますけどね。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
追記
|
14
|
+
|
15
|
+
--
|
16
|
+
|
17
|
+
駆動表が逆ですね。
|
18
|
+
|
19
|
+
```SQL
|
20
|
+
|
21
|
+
select *
|
22
|
+
|
23
|
+
from baseball.player as 選手
|
24
|
+
|
25
|
+
left join baseball.pitch as 投手
|
26
|
+
|
27
|
+
on 選手.年度 = 投手.年度
|
28
|
+
|
29
|
+
and 選手.選手ID = 投手.投手ID
|
30
|
+
|
31
|
+
left join baseball.pitch as 打者
|
32
|
+
|
33
|
+
on 選手.年度 = 打者.年度
|
34
|
+
|
35
|
+
and 選手.選手ID = 打者.打者ID
|
36
|
+
|
37
|
+
```
|
38
|
+
|
39
|
+
上記であれば、以下のインデックスを準備すると改善されると思います。
|
40
|
+
|
41
|
+
player:(年度,選手ID)
|
42
|
+
|
43
|
+
pitch :(年度,投手ID), (年度,打者ID)
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
select項目は、**case**や**coalesce()**を活用すれば簡潔になるでしょう。
|
1
訂正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
一方のみのjoin で1,2秒が担保できるのなら、一方のみ
|
5
|
+
一方のみのjoin で1,2秒が担保できるのなら、一方のみでjoinしたものをさらにjoinすると、倍程度の時間では済むかもしれません。
|
6
6
|
|
7
7
|
|
8
8
|
|