请教各位大哥,如何让以下数据查询加快速度。
就是在统计一次综合性考试中各个子考试中每个班在各个分数段的人数如下面的情况:
本次考试名称:12月月考,所属科目:语文,考试时间:2009-12-24 | |||||||||||
班级名称 | 分值 | 最高分 | 平均分 | 参考 | 及格 | 0-90 | 90-105 | 105-120 | 120-135 | 135-150 | |
2012级1班 | 150 | 109 | 87 | 57 | 25 | 32 | 22 | 3 | 0 | 0 | |
2012级2班 | 150 | 109 | 88.04 | 54 | 26 | 28 | 23 | 3 | 0 | 0 | |
2012级3班 | 150 | 109 | 89.63 | 57 | 30 | 27 | 28 | 2 | 0 | 0 | |
2012级4班 | 150 | 107 | 79.87 | 53 | 13 | 40 | 12 | 1 | 0 | 0 | |
2012级5班 | 150 | 107 | 90.49 | 57 | 32 | 25 | 26 | 6 | 0 | 0 | |
2012级6班 | 150 | 108 | 79.98 | 55 | 16 | 39 | 14 | 2 | 0 | 0 | |
2012级7班 | 150 | 108 | 82.45 | 53 | 16 | 37 | 15 | 1 | 0 | 0 |
本次考试名称:12月月考,所属科目:数学,考试时间:2009-12-24 | |||||||||||
班级名称 | 分值 | 最高分 | 平均分 | 参考 | 及格 | 0-90 | 90-105 | 105-120 | 120-135 | 135-150 | |
2012级1班 | 150 | 137 | 68.63 | 57 | 10 | 47 | 7 | 1 | 1 | 1 | |
2012级2班 | 150 | 101 | 47.65 | 54 | 3 | 51 | 3 | 0 | 0 | 0 | |
2012级3班 | 150 | 121 | 57.47 | 57 | 6 | 51 | 3 | 2 | 1 | 0 | |
2012级4班 | 150 | 82 | 46.55 | 53 | 0 | 53 | 0 | 0 | 0 | 0 | |
2012级5班 | 150 | 143 | 83.6 | 57 | 26 | 31 | 13 | 10 | 2 | 1 | |
2012级6班 | 150 | 115 | 54.35 | 55 | 7 | 48 | 3 | 4 | 0 | 0 | |
2012级7班 | 150 | 115 | 46.17 | 53 | 2 | 51 | 1 | 1 | 0 | 0 |
本次考试名称:12月月考,所属科目:英语,考试时间:2009-12-24 | |||||||||||
班级名称 | 分值 | 最高分 | 平均分 | 参考 | 及格 | 0-90 | 90-105 | 105-120 | 120-135 | 135-150 | |
2012级1班 | 150 | 120 | 81.79 | 57 | 19 | 38 | 14 | 4 | 1 | 0 | |
2012级2班 | 150 | 121 | 71.2 | 54 | 10 | 44 | 8 | 1 | 1 | 0 | |
2012级3班 | 150 | 120 | 86.61 | 57 | 31 | 26 | 25 | 5 | 1 | 0 | |
2012级4班 | 150 | 104 | 69.38 | 53 | 8 | 45 | 8 | 0 | 0 | 0 | |
2012级5班 | 150 | 125 | 94.84 | 57 | 40 | 17 | 23 | 14 | 3 | 0 | |
2012级6班 | 150 | 113 | 65.71 | 55 | 11 | 44 | 8 | 3 | 0 | 0 | |
2012级7班 | 150 | 110 | 75.08 | 53 | 19 | 34 | 15 | 4 | 0 | 0 |
其中的像最高分,分数段人数都是从数据库里面读取的,但是如果是十次考试一起查询的话,反映时间会用去6秒左右,请问各位大哥如何才能减少反映时间
如果sql语句复杂 数据展示结构稳定 建议用汇总表
如果不想那么麻烦 加个缓存就可以了
是否可以考虑把科目放到group by 里面一起统计,这样一条SQL 语句就可以统计出所有的科目,然后你再在程序中按科目过滤一下,或者把结果输出到临时表中再查询,这样理论上应该会快 1/N 左右 (N 为科目数)。另外不知道你索引是怎么建的,SQL语句是怎么写的,这方面应该也可以做一些优化。
先过滤后连接