我正在構建讀取帖子時注意到的RSS閱讀器(如Google Reader所做的那樣)。我有它的工作範圍,當我向下滾動時,它通過將行插入到「讀取文章」表中來標記帖子爲已讀,該表中記錄讀取的項目(ciid
),讀取它的用戶(uid
)和讀取的日期dateRead
)。高效地在SQL表中創建大量條目
現在,我正在考慮如何提供「全部標記爲已讀」功能。如果只有25篇未讀文章,那就夠簡單了。我會查詢25篇文章的主要文章表 - 我有一個子查詢來確定哪些文章未讀 - 當前用戶未讀取,收集需要標記爲已讀的ciid
,並插入新的讀取條目。但是,如果有20,000個條目未讀?檢索20,000條未讀條目似乎相當低效,收集那些ciid
秒,然後發送回MySQL服務器20,000條插入命令。
有沒有更高效的方法來做到這一點,也許有一個SQL查詢直接處理所有這些?如果系統中只有一兩個用戶,我想我的低效方法不會成爲問題,但我希望系統能夠相對較好地擴展。
謝謝,@ user1853955!這聽起來像它會做的伎倆。我認爲你對文章的老化是正確的 - 我需要考慮如何最好地實現這一點。我正在考慮從數據庫中完全刪除文章,假設他們有一定的年齡,除非特定的ciid只有非常少的文章。我不想標記每個用戶「全部閱讀」,因爲用戶可以標記訂閱源,因此讀取全部可能僅適用於「技術」訂閱源,而不適用於「國際新聞」訂閱源。 –
我想我可以標記每個標籤的全部標誌,儘管現在標籤沒有任何獨立的存在;它們只是作爲不同Feed的屬性而存在。嗯... –
你可以爲每個用戶存儲閱讀文章,可選地有一些超時,沒有太多的問題(假設正確的索引)。問題是您的「全部讀取」功能會爲此表添加大量數據。我認爲「最後閱讀」日期(每個標籤)是一個好主意。 – apartridge