假如我有这样一个需求,我有个用户表,还有个用户票数表,
我想要查询处7天内(如今天说星期五,上周五到现在)的用户票数排行榜,
我有想过每隔15分钟或者半个小时定时去统计一次全部用户7天内的票数,保存在表。
我不知道我的这个思路对不对?
我还想过,当该用户得一票我就统计一次该用户7天内的票数,保存在表字段,
但这边会有一个问题,假如该用户一直没被点赞呢?那不就永远不会触发统计7天内的数据操作?
两个办法,一个是定时作业,你说的那样半个小时或者一天做一次。一个是当用户得票的时候统计。
后面的算法在如果你的系统只提供数据给自身来说,是完全没有问题的。因为尽管没有触发数据不会统计,但是因为数据只在你程序内使用,没任何途径知道这些数据统计没有更新,从执行效果来说,和主动统计一样。
感觉两种方式的话得看你的数据量,如果用户量大,就用实时点击统计,如果就3个用户进行候选得票的话,那肯定是定时统计更好咯。
至于不得票不处罚统计的问题,你默认进入页面就统计一次呗
定时器可以在外部程序完成,使用setTimer
查询表就是用: select * from 表 a, 表b where a.userid = B.userID and datediff(week,上周时间,getdate())=0 //getdate()当前日期