SQL質疑応答スレ 9問目

このエントリーをはてなブックマークに追加
839NAME IS NULL
Table1
|ID|Score|Div1|Div2|
|1 |0.2 |1 |1 |
|2 |0.3 |1 |2 |
|3 |0.4 |1 |3 |
|4 |0.2 |1 |4 |
|5 |0.1 |2 |1 |
|6 |0.3 |2 |3 |

Table2
|ID|Div1|
|1 |1 |
|1 |2 |
|1 |3 |
|2 |2 |


こういう構成で、約2000万行のTable1と約100万行のTable2について
1.Select Div1, Score From Table Where Div2 = 2 or Div2 = 4;
2.Select Div1, Score From Table Where Div2 = 5 or ... or Div2 = 9;


N.・・・・;
このようなN個のクエリを発行し、
得られる全ての結果から共通するDiv1の値を含む行のみを抽出、
得られた共通するDiv1の値を使ってTable2にjoinし、
Table2のIDごとのScoreの合計値を取得したいのです。
(Score値が複数回加算されるのは仕様です)

手続き的に処理をしているのですが、どうにも遅く
一回のSQLで素早く取得する方法はありませんでしょうか。

どうかお願い致します。