首页 文章

最有效的SQL查询

提问于
浏览
0

我有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 回答

  • 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在哪里找到它)来了解如何提高性能,它建议索引或其他提示 .

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

相关问题