PHP / MySQL存储在单独的表中或每次计算

时间:2012-06-01 00:12:39

标签: php mysql sum

我需要为用户存储积分。每个点都存储在一个带有日期的单独行中。现在,当用户打开他的页面时,它将显示他的总分数。

现在计算总积分,我可以考虑以下几个选项:

  1. 每次用户打开他的页面时,计算该ONE mysql表中所有点的总和并显示给他

  2. 为总点数创建另一个表格,每当添加一个点时,计算总和,并将之前的总和值替换为新值。当用户打开他的页面时,它只访问该总和表中的那一行并向他显示值

  3. 创建一个CRON作业,每晚运行一次,计算用户的总点数并将其存储在(2)

  4. 中创建的单独表格中

    对我来说,选项2看起来效率很高,但只是想知道这样的事情通常是怎么做的?

1 个答案:

答案 0 :(得分:2)

如果您具有适当的权限,则可以在点表上创建触发器。

delimiter | 
create trigger update_point_total 
    after insert on points for each row 
    begin
    update point_totals set total=total+NEW.points
    where userid=NEW.userid;
    end
|
delimiter;

每次将行插入点表时,这将导致总点数列更新。