我有2张 table :
T1 {
id: string;
school: string
}
和
T2 {
school_id: string;
student_id: string;
tuition_fee: double
}
这两个表由T1.id和T2.school_id相关联 . T1包含每所学校的信息 . 它相对较小 . T2包含每个学生的学费信息 . 它可能是巨大的(数百万条记录) .
Edit:
现在,我想找出哪3所学校收取学生的大部分学费 . Assume that it's impossible that 2 schools collect the same amount of total tuition fees from all its students. 我的解决方案如下:
-
由school_id组成的T2记录;
-
每组中tuition_fee的计算总和;
-
按总和降序对组进行排序;
-
获得前3名 .
我的问题是:
-
有更好的方法吗?
-
这样做效率最高的SQL是什么?
-
考虑提高速度的其他考虑因素?例如使用索引,视图等
1 回答
如果您只想要school_id和费用的总和,一个选项是:
如果你使用SQL服务器,你可以使用查询分析器(some info在哪里找到它)来了解如何提高性能,它建议索引或其他提示 .
似乎不是一个非常沉重的查询 .