0

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

我有 3 张桌子:

用户:

id, username, email

问题:

id, date, question

回答

id_question, id_user, response, score

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

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

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

4

2 回答 2

1

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

尽量限制子查询。

于 2012-10-30T10:00:02.847 回答
1

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

于 2012-10-30T11:17:34.530 回答