繁体   English   中英

mysql php:如何有效地获取包含条目的先前X日期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM