[英]Forum, get last post/topic
基本上,我正在為Intranet編寫一個小的論壇腳本。
我為論壇准備了3個mysql(MySQLi)表:
forum_answer-保留答復forum_question-保留第一篇文章forum_categories-保留類別的名稱和描述。
好的,所以在論壇索引上,我有一張表格來提取所有類別,但是,我也有一列來提取該類別/論壇中的最新帖子。
您對我如何獲得該論壇的最新帖子有任何想法嗎?
我當時正在考慮在forum_categories表上添加一個新列,並在每次發帖時對其進行更新,但這可能會變得混亂。
謝謝 :)
在查詢方面,您可以使用類似以下內容的查詢來獲取類別列表:
select forum_categories.id, forum_categories.name, max( forum_answer.id ) as
from forum_categories
left join forum_questions on forum_questins.category_id = forum_categories.category_id
left join forum_answers on forum_answers.question_id = forum_questions.question_id
group by forum_categories.id, forum_categories.name
這項操作的費用取決於您論壇的性質。 如果人們經常發布,則每次有人發布時更新類別上的列可能會更昂貴。 如果人們經常加載類別列表,則連接可能是更昂貴的操作。
您可能還會發現創建視圖從以下類別中提取類別列表很有用:
create view category_list as
select forum_categories.id, forum_categories.name, max( forum_answer.id ) as latest_asnwer_id
from forum_categories
left join forum_questions on forum_questins.category_id = forum_categories.category_id
left join forum_answers on forum_answers.question_id = forum_questions.question_id
group by forum_categories.id, forum_categories.name
然后,您可以像訪問表一樣訪問該表。
您實際上是在朝着正確的方向思考。
您絕對應該“緩存”問題的最新帖子和論壇的最新帖子,並將它們分別存儲在[forum_question]和[forum_categories]表中。 “緩存”表示每次有人添加新帖子或刪除帖子時更新它們。
當您的論壇內容量達到某個閾值時,最新帖子的實時計算將非常緩慢。 通過在每次提交新帖子時更新“緩存”,您可以將大量的一次性計算工作划分為對許多請求進行分配的小更新,因此幾乎不會引起注意。
刪除帖子后,您獲得的唯一成功是,您需要更新問題和論壇的緩存。 但這是罕見的事件,因此價格可以承受。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.