最有效的SQL查询

时间:2015-12-30 19:34:15

标签: sql database algorithm optimization query-optimization

我有两张桌子:

T1 {
  id: string;
  school: string
}

T2 { 
  school_id: string; 
  student_id: string; 
  tuition_fee: double 
}

这两个表由T1.id和T2.school_id相关联。 T1包含每所学校的信息。它相对较小。 T2包含每个学生的学费信息。它可能很大(数百万条记录)。

修改

现在,我想知道哪3所学校收取学生的大部分学费。 假设2所学校不可能从所有学生那里收取相同数量的学费。我的解决方案如下:

  1. 由school_id组成的T2记录;
  2. 计算每组中tuition_fee的总和;
  3. 按照降序对总和对组进行排序;
  4. 获得前3名。
  5. 我的问题是:

    1. 有更好的方法吗?
    2. 执行此操作的效率最高的SQL是什么?
    3. 考虑提高速度的其他考虑因素?例如使用索引,视图等

1 个答案:

答案 0 :(得分:2)

如果您只想要school_id和费用的总和,则可以选择:

SELECT TOP 3
  SUM(tuition_fee) AS TOTAL_TUITION_FEE,
  school_id
FROM T2
GROUP BY school_id
ORDER BY TOTAL_TUITION_FEE DESC

如果你使用SQL服务器,你可以使用查询分析器(some info在哪里找到它)来了解如何提高性能,它建议索引或其他提示。

似乎不是一个非常沉重的查询。