Explanation:
>我有一个脚本,显示每个用户的总学分(声誉),它在数据库中有一个历史记录表,用于所有学生的学分
以下是我的历史数据库表的示例:
+----------------------------------------------+ | DATE ID USERNAME CREDITS | +----------------------------------------------+ | ... 1 X 12 | | ... 2 E 2 | | ... 3 X 1 | | ... 4 X -7 | | ... 5 O 4 | +----------------------------------------------+
>我的脚本使用SELECT SUM FROM TABLE WHERE username =’X’并回显它,所以在这种情况下,对于用户X(12 1 – 7),它回应6
Questions:
>我想知道的不是这个(SELECT SUM的所有历史,显示一个用户信用INSTEAD有一个不同的表的总用户数)如果历史表是如此巨大的问题,会出现问题? (让我们说几年后的100,000,000条记录)
这是大多数专业程序员做的吗? (如果不是,什么)
>如果用户想要查看信用记录,那么如果用户希望在* SELECT * ing或否(为了表现)时限制LIMIT 100记录,那么该历史记录部分如何?
这是否应该在每个页面上刷新或每页更改?
(如果1000个用户在线,并且每次刷新应用此SELECT查询都不会使服务器减慢)
EDIT After an answer:
但是,如果我们必须在不同的表中保持总额并自动更新它们,则有两个问题:
>如果我们完全在用户收到一些信用时做到这一点,用户是不是可以在完全相同的时间收到两个不同的信用(这是可能的),而且我们无法将自动增量放在总计表中(因为每个用户只有1条记录),我们可能会错过1个信用额,或者如果有这个问题的解决方案,我不知道
>如果我们将Cron-Job设置为频繁执行,那么在cron作业刷新总计表之前,用户积分不是最新的