要获得用户的平均评分,我应该每次都运行 SQL 查询以从不同的表计算平均值,还是将当前平均值存储在用户的个人资料中以方便使用?
更具体...
我正在开发一个用户反馈/评级系统。我有两个表,一个称为“用户”,另一个用于“评论”。评论表将包含评论、评级和用户 ID。我想获得给定用户的平均评分,[显然] 是所有评分的总和除以评分的数量。我可以每次运行此查询并收集所有行,然后进行数学运算,或者...
要限制对数据库的查询数量,只需更新“用户”表中的平均值即可。每次添加新的评论/评分时,用户的行也会更新。
这样更有优势吗?它会改善页面加载吗?欢迎任何建议:)
最佳答案
这是一个很好的思考方式。该术语称为“开销”。它是您的应用程序占用的系统资源量。
如果我是你,我会怎么做
- 用户登录后,计算平均值并将其存储在您的 session 中
- 当用户提交评分时,在您保存新评分时重新计算并存储新值。
- 如果您只是存储一般的平均评分(如用户信息页面),我会计算平均值并将其存储在用户记录中,并在重新计算时遵守#2。一个简单的查询仍然比聚合查询消耗更少的资源。
关于php - 将用户的 "rating"存储在配置文件中或不断运行 SQL 查询以从单独的表中获取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19897423/