为了账号安全,请及时绑定邮箱和手机立即绑定

如何快速统计出某段时间内的记录总数

如何快速统计出某段时间内的记录总数

呼啦一阵风 2019-04-23 15:18:17
我们经常在项目中遇到的需求就是计算在一周内的记录总数,而且这个数目是需要在列表页出现的,所以用SELECTCOUNT显然不合适。但是如果你用缓存来做的话,因为这个值是根据你的当前时间不断在变的,比如用户在下午14:10来访问这个页面,那么我们要计算的就是从7天前的14:10到现在这段时间内的记录总数。这是不可能缓存的,我不知道各位是怎么设计的。我有一个思路就是,还是用SELECTCOUNT来统计,但是把它缓存住,一个小时更新一次。看起来解决的还可以,不知道各位有什么更好的思路,比这个准确度更高的。
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

你要不创建一个trigger和一张表用来记录行数,如果你的入数据库的量不大的话。比如
ONINSERTUPDATEcounterSETtable_name_count=table_name_count+1;
然后前台读取的时候从那张表读就是了。不过也要看你用的是什么SQL了,MySQL的MyISAM对这个问题是做了优化的;就直接SELECTCOUNT就是了。
                            
查看完整回答
反对 回复 2019-04-23
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

维护一个队列,队列的每个元素是记录产生的时间:1.每当一个新纪录产生时,入队。更新队列的元素总数。2.每当来一次查询的时候,计算起始时间t,将所有小于t的记录出队。更新队列的元素总数。返回队列的元素总数。优点:高效、精确。
缺点:占用一定的内存,对于100万个元素需要约4MB的内存空间。p.s.这个算法可以很容易地用mysql表来实现。
                            
查看完整回答
反对 回复 2019-04-23
  • 2 回答
  • 0 关注
  • 370 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信