2011-05-01 44 views
4

Asp.net mvc3論壇實施。實施的一部分是一項功能,顯示哪些帖子已被閱讀,哪些帖子沒有。論壇未讀郵件實施

現在我已經實現它的方式是我創建一個條目在我的數據爲每個用戶在創建一個新的職位,然後將它們刪除,因爲它們顯示給我的用戶,我也刪除所有條目1個月。

我目前有450個用戶,所以需要很長時間才能創建它們。

我認爲必須有更好的方式,因爲擁有超過1000個用戶的大型vbullitin或phpbb論壇可以在創建後創建所有這些條目時無需花費2+ sek來完成此操作,但我沒有找到它。我可以在這個網站上看到關於此的其他一些問題,但我還沒有找到可以使用的答案。

回答

-1

也許每個用戶應該堅持他們所查看的帖子的ID,而不是那些他們沒有查看過的帖子的ID。在創作的時候它的成本會大大降低。

0

一種方式來存儲數據較少,使事情跑得更快:對於用戶讀取的每個線程都會創建一個數據庫條目,以便在上次查看該線程時記錄時間戳記。通過這種方式,每個用戶都不會爲每個帖子獲取條目 - 僅針對每個線程...並且僅針對他們實際讀取的線程。

您可以很容易地確定線程內的內容未讀...如果您在此用戶/線程的數據庫中沒有時間戳記,那麼它們都是未讀取的。如果您有時間戳,則該時間戳之後的線程中的所有帖子都是未讀的。

+0

這樣做會導致更少的讀取但不能插入,因爲我將不得不爲每個用戶插入一行,因爲檢查它們是否已經存在將會花費更多時間。 – Androme 2011-05-01 15:26:51

+0

不同意它會花費更多時間。這並不像你必須迭代整個表來認識到沒有特定用戶 - 線程組合的條目。數據庫比這更聰明(特別是如果你索引userid和threadid列)並且可以比O(N)更快地搜索, – 2011-05-01 15:40:05