[英]mysql php : how to efficiently fetch previous X dates that include entries
想象一下一个基本的网站,用户可以在其中随机发布日期。 系统使用mysql-php并将每个帖子存储在一个表中,称为tablePost,其中一列存储日期(或时间)。 请注意,用户一天可以发布多个帖子。 我想要实现的是能够获取用户发布的最近4天(甚至更多)的日期。 还要获取帖子信息(postid,posttext等)。 示例输出为:
-2012-04-25(3个帖子,postinfo ...)
-2012-04-12(2个帖子,postinfo ...)
-2011-09-12(33个帖子,postinfo ...)
-2011-03-04(10个帖子,postinfo ...)
我可以想象两个解决方案:
1)仅使用tablePost表,通过php遍历条目并获取所需数据
2)创建另一个表,调用tableActiveDays。 用户发布时,可能会使用INSERT IGNORE插入条目(userId,dateDay),或者检查是否之前未插入过条目。 因此,每个(userId,dateDay)都是唯一的。 这样,如果我想获取最近4个工作日,我可以使用简单的select ... order by ... limit by 4查询。
我的问题是:
-还有其他方法可以完成此任务吗?
-最有效的方法是什么?
创建INTEGER
字段,并将其称为“ dt_timestamp”。 当用户发布消息保存在time()
函数的“ dt_timestamp”结果中time()
。
更新:
如果您已经注册了用户,则添加INTEGER
类型的字段,将其称为last_activity
。 用户发布内容时,请使用time()
更新此字段。 然后使用以下查询:
SELECT pt.* FROM post_table pt JOIN users_table ut ON ut.id = pt.user_id WHERE
pt.dt_timestamp >= ut.last_activity - 86400 * 4 AND ut.id = %needed_user_id%;
users_table
有场id
-用户的ID。 post_table
具有字段user_id
-users_table中的字段值。
使用DATETIME
比使用整数时间戳要慢得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.