2012-06-01 26 views
4

我需要为用户存储点数。每个点将被存储在一个包含日期的单独行中。现在,当用户打开他的页面时,它会显示他的总积分。PHP/MySQL存储在单独的表中或每次计算

我们计算总积分,我能想到的下列选项:

  1. 用户打开他的网页时,都会计算在一个MySQL表他的所有点的总和,并显示给他

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

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

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

+2

你会有多少用户,点数值多久改变一次?您是否将存储审计线索,以便您可以重新计算点值,如果它们损坏? – 2012-06-01 00:14:05

+0

对于选项2,而不是重新计算总和,您可以+ =点字段。 – Jared

+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; 

这将导致总点列更新每一行插入到您的点表中。

+0

谢谢。没有想过触发器。它看起来像一个简单的事情,同时从我的PHP代码中删除部分功能。 – WebNovice

相关问题