回答編集履歴
2
追記
answer
CHANGED
@@ -2,4 +2,23 @@
|
|
2
2
|
|
3
3
|
一方のみのjoin で1,2秒が担保できるのなら、一方のみでjoinしたものをさらにjoinすると、倍程度の時間では済むかもしれません。
|
4
4
|
|
5
|
-
ただ、適切なインデックスと適切なSQLなら、秒は掛からないと思いますけどね。
|
5
|
+
ただ、適切なインデックスと適切なSQLなら、秒は掛からないと思いますけどね。
|
6
|
+
|
7
|
+
追記
|
8
|
+
--
|
9
|
+
駆動表が逆ですね。
|
10
|
+
```SQL
|
11
|
+
select *
|
12
|
+
from baseball.player as 選手
|
13
|
+
left join baseball.pitch as 投手
|
14
|
+
on 選手.年度 = 投手.年度
|
15
|
+
and 選手.選手ID = 投手.投手ID
|
16
|
+
left join baseball.pitch as 打者
|
17
|
+
on 選手.年度 = 打者.年度
|
18
|
+
and 選手.選手ID = 打者.打者ID
|
19
|
+
```
|
20
|
+
上記であれば、以下のインデックスを準備すると改善されると思います。
|
21
|
+
player:(年度,選手ID)
|
22
|
+
pitch :(年度,投手ID), (年度,打者ID)
|
23
|
+
|
24
|
+
select項目は、**case**や**coalesce()**を活用すれば簡潔になるでしょう。
|
1
訂正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
> join区を二つつなげて実行したのですが、実行に10分程度かかってしまいます。一方joinを1つだけにした場合、1,2秒で終了します。
|
2
2
|
|
3
|
-
一方のみのjoin で1,2秒が担保できるのなら、一方のみ
|
3
|
+
一方のみのjoin で1,2秒が担保できるのなら、一方のみでjoinしたものをさらにjoinすると、倍程度の時間では済むかもしれません。
|
4
4
|
|
5
5
|
ただ、適切なインデックスと適切なSQLなら、秒は掛からないと思いますけどね。
|