我想在mysql中执行一些我知道会非常慢的请求:
我有3张桌子:
用户:
id, username, email
问题:
id, date, question
答案
id_question, id_user, response, score
我想做一些统计数据,比如排名最高的X用户(所有得分的总和)所有时间或给定的时间(例如上个月)。或者它可以是第100和第110范围之间的用户
我会有成千上万的用户和数百个问题因此请求可能会很长,因为我需要按分数总和排序,限制到给定范围,有时只根据日期选择一些问题,...
我想知道是否有一些方法可以优化请求!
答案 0 :(得分:1)
对于存档统计信息,您可以创建存储不会移动的排名的表(去年,上个月,最后一天)。尝试尽可能多地计算这些表中的统计数据,将索引放在id_user,date,type_of_ranking ......
尝试尽可能多地限制子查询。
答案 1 :(得分:1)
如果您有大量数据没有其他选择,只有您可以通过创建新表来优化它,以便以某种方式汇总每天/每周或每月的数据。可能会按周或按月按月汇总用户和邮票的分数。随着求和的范围越长,您的查询就越快。