优化sql请求统计信息

时间:2012-10-30 09:44:17

标签: mysql sql performance database-performance

我想在mysql中执行一些我知道会非常慢的请求:

我有3张桌子:

用户:

id, username, email

问题:

id, date, question

答案

id_question, id_user, response, score

我想做一些统计数据,比如排名最高的X用户(所有得分的总和)所有时间或给定的时间(例如上个月)。或者它可以是第100和第110范围之间的用户

我会有成千上万的用户和数百个问题因此请求可能会很长,因为我需要按分数总和排序,限制到给定范围,有时只根据日期选择一些问题,...

我想知道是否有一些方法可以优化请求!

2 个答案:

答案 0 :(得分:1)

对于存档统计信息,您可以创建存储不会移动的排名的表(去年,上个月,最后一天)。尝试尽可能多地计算这些表中的统计数据,将索引放在id_user,date,type_of_ranking ......

尝试尽可能多地限制子查询。

答案 1 :(得分:1)

如果您有大量数据没有其他选择,只有您可以通过创建新表来优化它,以便以某种方式汇总每天/每周或每月的数据。可能会按周或按月按月汇总用户和邮票的分数。随着求和的范围越长,您的查询就越快。