簡體   English   中英

在配置文件中存儲用戶的“評分”,或不斷運行SQL查詢以從單獨的表中獲取平均值

[英]Store a user's “rating” in profile or constantly run SQL queries to get average from separate table

為了獲得用戶的平均評分,我應該每次運行SQL查詢來從不同的表中計算平均值,還是應該將當前的平均值存儲在用戶的配置文件中以便於使用?

更加具體...

我正在開發一個用戶反饋/評分系統。 我有兩個表,一個表名為“用戶”,另一個表為“注釋”。 評論表將包含評論,評分和用戶ID。 我想要獲得給定用戶的平均評分,這[顯然]是所有評分的總和除以評分數量。 我可以每次運行此查詢並收集所有行,然后進行數學運算,否則...

要限制對數據庫的查詢數量,只需更新“用戶”表中的平均值即可。 每次添加新評論/評分時,用戶行也會被更新。

這更有利嗎? 會改善頁面加載量嗎? 任何建議,歡迎:)

這是思考的好方法。 該術語稱為“開銷”。 應用程序占用系統資源的數量。

如果我是你,我會做的是這個

  1. 用戶登錄后,計算平均值並將其存儲在會話中
  2. 用戶提交評分時,請在保存新評分並存儲新值時重新計算。
  3. 如果您只是一般地存儲此平均評分(如用戶信息頁面),我將計算平均值並將其存儲在用戶記錄中,並在重新計算時遵循#2。 一個簡單的查詢仍然比聚合查詢消耗更少的資源。

在您實際遇到性能瓶頸之前,我將忽略數據庫必須處理的查詢數量。 否則,您將面臨過早優化的嚴重風險(眾所周知,這是萬惡之源 )。

現在,只需選擇簡單的選項:

  • 您最習慣的一種(因此,將為其創建最佳解決方案)
  • 現在需要減少編寫代碼的代碼(通常,編寫的代碼越少,可以創建的錯誤就越少)
  • 您可以早點完成並繼續下一項任務的任務(或今天早些時候回家)
  • 對於將來需要維護您的代碼的其他開發人員而言,這一點將更加清晰

之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM