SQL Serverを使用してデータベースの集計用のSQLを作成しております。
以下のテーブル TB_成績表 があったと仮定させていただきます。
|クラス|班|性別|学生コード|国語|算数|理科|社会|英語|
|:--:|:--:|--:|
|1組|A|男|00001|10|10|20|20|30|
|1組|A|女|00002|20|50|30|10|40|
|2組|B|男|00003|30|40|40|50|50|
|1組|A|男|00004|10|10|20|20|30|
|2組|A|女|00005|20|50|30|10|40|
|1組|B|男|00006|30|40|40|50|50|
|2組|A|男|00007|10|10|20|20|30|
|2組|A|女|00008|20|50|30|10|40|
|1組|B|男|00009|30|40|40|50|50|
上記のテーブルに対して集計を行うために、
同一組、同一班で各科目の点数の合計を出そうとした場合に、
SQL
1SELECT 2 クラス, 3 班, 4 SUM(国語) AS 国語総計, 5 SUM(算数) AS 算数総計, 6 SUM(理科) AS 理科総計, 7 SUM(社会) AS 社会総計, 8 SUM(英語) AS 英語総計 9FROM 10 TB_成績表 11GROUP BY 12 クラス, 13 班
という構文で行っております。
※Indexはクラスと班の複合インデックスを作成しています。
上記の場合に件数が少ない場合は問題ないのですが
数十万件単位での処理となった場合に、集計関数のレスポンスが急激に悪くなっております。
いろいろと検索サイト等でも調べているのですが皆さまのお知恵を拝借して他にチューニング等が
可能な個所がないか意見を頂ければと思い投稿させていただきました。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/25 07:42
2018/10/25 08:31
2018/10/25 08:48
2018/10/25 08:54
2018/10/25 09:10 編集
2018/10/25 09:12
2018/10/25 09:21
2018/10/25 09:54
2018/10/25 09:58
2018/10/25 10:05
2018/11/01 01:05