搜尋

首頁  >  問答  >  主體

redis - 資料庫表設計的一些疑問,例如一篇文章(按讚數,瀏覽數,評論數要不要存在文章的表裡)

一直以來都有這個疑問
一張文章表,文章有點讚、瀏覽記錄,評論,都是三個獨立的表,查詢文章列表數據時需要展示這三個數量。


兩種方案:

  1. 在文章表裡增加三個數量字段,每次被點讚(取消點讚)/評論(刪除評論)/瀏覽,都去更新這個字段,這樣未免效率過低了,尤其是瀏覽量每次都要更新,而且冗餘了字段

  2. 每次去關聯查詢總數,這樣速度太慢。
    如果放到快取/搜尋引擎裡,那還需要每次都去更新嗎,這樣也太浪費了

phpcn_u1582phpcn_u15822792 天前1433

全部回覆(2)我來回復

  • 高洛峰

    高洛峰2017-04-28 09:05:59

    當評論表的數量增長到一定程度時,增加冗餘欄位是有必要的。雖然多了幾個冗餘字段要維護,但對於效能的提升很明顯,畢竟沒人會希望資料庫被壓垮的吧?

    另外,按讚數、評論數、閱讀數這些不是實時性要求很高的數據,所以不需要每次點讚(取消點讚)/評論(刪除評論)/瀏覽都去更新這個字段,你可以寫個定時腳本,每半小時或一小時去更新那些冗餘字段就可以了

    回覆
    0
  • 黄舟

    黄舟2017-04-28 09:05:59

    分錶的設計是沒錯的,當你考慮到資料量增大,一張很重的表並不好用。如果考慮到按讚等以後還有其他額外信息,這樣做就更有必要了。

    推薦做緩存,並且只即時更新緩存,具體持久化可以定時跑。

    回覆
    0
  • 取消回覆