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

Web*_*ice 5 php mysql sum

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

现在要计算总分,我可以想到以下选项:

  1. 每次用户打开他的页面时,计算他在该一张 mysql 表中的所有积分的总和并将其显示给他

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

  3. 创建一个每天晚上运行的 CRON 作业来计算用户的总积分并将其存储在 (2) 中创建的单独表中

对我来说,选项 2 看起来很有效,但只是想知道这样的事情通常是如何完成的?

小智 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;
Run Code Online (Sandbox Code Playgroud)

这将导致每次将行插入到积分表中时更新总积分列。