存储排行榜的用户统计信息

时间:2014-10-29 09:08:46

标签: php mysql statistics leaderboard

我试图将用户统计数据存储在数据库中以显示在排行榜上,排行榜可按不同类别(例如,顶级XP,顶级杀戮等)进行排序,也可按时间过滤(每日,每周,每月)和整体统计数据。)

我目前在我的数据库中有一个经验表,每次用户获得任何xp时都会插入该表,存储用户ID,xp的值以及给定时间的时间戳。我还有一个kills表,它存储用户拥有的每个kill以及其他地方所需的时间戳和其他数据。

我的体验表的当前大小约为140万行,杀戮表约为410万行。有时可能需要大约1秒来计算用户杀死一个月(使用MySQL count()来获取时间范围内的总金额)。

获取总XP并按值排序的当前方式:

SELECT DISTINCT `user_id`, SUM(`value`) AS `total` 
FROM   `user_experience` 
WHERE  `timestamp` > ? 
GROUP  BY `user_id` 
ORDER  BY `total` DESC 
LIMIT  20 offset 0 

有没有更好的方法来获得总XP或更快的方式来获得用户在所选时间内获得的总杀戮并按价值排序?有没有更好的方法来存储xp / kill日志,仍然可以按时间搜索它?

0 个答案:

没有答案