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 帖子, 帖子信息...
- 2012-04-12 (2 帖子, 帖子信息...
- 2011-09-12 (33 帖子, 帖子信息(
- 2011-03-04 (10 帖子, 帖子信息...

我可以想象两种解决方案:

1(仅使用tablePost表,通过php迭代条目并获取所需的数据

2(创建另一个表,调用表活动日。当用户发布时,可能会插入一个条目(userId,dateDay(,可能会插入忽略或检查它以前是否没有插入过。因此,每个(userId,dateDay(都是唯一的。这样,如果我想获取最近 4 个活动天,我可以使用一个简单的选择......订购方式 ...限制为 4 个查询。

我的问题是:
- 还有其他方法可以完成这项任务吗?
- 实现这一目标的最有效方法是什么?

创建INTEGER字段并将其称为"dt_timestamp"。当用户发布消息保存在time()功能的"dt_timestamp"结果中时。

更新:
如果您有注册用户,则添加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 比使用整数时间戳慢得多。