簡體   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