在討論板中,通常比主題標題(標題)多出許多帖子。國際海事組織將頭條新聞看作是一個更清潔的做法,但是如果MySQL搜索每一篇文章來抓住頭條新聞,它會不會嚴重懲罰性能?有關使用MySQL的討論板的數據庫設計的困境
爲頭條新聞提供獨立表格肯定會提高性能,但我覺得它增加了不必要的複雜性。
我應該選擇哪種性能清潔度折衷?
在討論板中,通常比主題標題(標題)多出許多帖子。國際海事組織將頭條新聞看作是一個更清潔的做法,但是如果MySQL搜索每一篇文章來抓住頭條新聞,它會不會嚴重懲罰性能?有關使用MySQL的討論板的數據庫設計的困境
爲頭條新聞提供獨立表格肯定會提高性能,但我覺得它增加了不必要的複雜性。
我應該選擇哪種性能清潔度折衷?
您可以簡單地擁有一個「is_headline」列,其索引以該列開頭,僅針對「僅標題」查詢。
這將是好的表現,同時避免2表設計的複雜性。
我會用更簡單的解決方案(考慮到標題爲帖子 - 只有在這兩者共享他們的大部分屬性和行爲時,您才應該這樣做),至少在您確實遇到性能問題之前。
而且,如果你確實有表演的問題,也有可能更容易解決方案來優化,如:
我想補充,像高德納說:
我們應該忘記小 效率,講的 時間約97%:過早的優化是一切罪惡的 根。
如果有一天,你真的遇到了表演問題,也許那一天是時候嘗試這種想法......但只要你不需要它......爲什麼要去通過這種麻煩?
即使這樣,添加更多緩存或將第二臺服務器投入遊戲可能會更便宜,而不是重新考慮這種事情 - 實際上性能優勢可能會更好!
這取決於您的頭條與帖子分享的功能。這可能是頭條新聞非常清楚,最好讓他們獨立。此外,請考慮您可以使用標題行作爲非規範化的性能改進(更新「最近發佈的帖子」時間,用戶和預覽到標題,並且您無需在頭版頁面查詢中查找)。
請勿根據性能考慮設計表格。性能很重要,但是在開始擔心性能之前,您需要獲得邏輯模型。一個錯誤的邏輯模型會導致代碼無休止地扭曲,大量的錯誤,很長的開發時間,並最終導致性能下降。
...... Knuth說的。
一個既恰當又相關的表格設計可以幫助您獲得所需的表現。你有索引,你有表格分區,你有很多工具可以在不影響應用程序的情況下微調數據庫。