php - 将用户的 "rating"存储在配置文件中或不断运行 SQL 查询以从单独的表中获取平均值

标签 php mysql sql

要获得用户的平均评分,我应该每次都运行 SQL 查询以从不同的表计算平均值,还是将当前平均值存储在用户的个人资料中以方便使用?

更具体...

我正在开发一个用户反馈/评级系统。我有两个表,一个称为“用户”,另一个用于“评论”。评论表将包含评论、评级和用户 ID。我想获得给定用户的平均评分,[显然] 是所有评分的总和除以评分的数量。我可以每次运行此查询并收集所有行,然后进行数学运算,或者...

要限制对数据库的查询数量,只需更新“用户”表中的平均值即可。每次添加新的评论/评分时,用户的行也会更新。

这样更有优势吗?它会改善页面加载吗?欢迎任何建议:)

最佳答案

这是一个很好的思考方式。该术语称为“开销”。它是您的应用程序占用的系统资源量。

如果我是你,我会怎么做

  1. 用户登录后,计算平均值并将其存储在您的 session 中
  2. 当用户提交评分时,在您保存新评分时重新计算并存储新值。
  3. 如果您只是存储一般的平均评分(如用户信息页面),我会计算平均值并将其存储在用户记录中,并在重新计算时遵守#2。一个简单的查询仍然比聚合查询消耗更少的资源。

关于php - 将用户的 "rating"存储在配置文件中或不断运行 SQL 查询以从单独的表中获取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19897423/

相关文章:

mysql - 如何处理多个用户可能相同的用户输入数据

sql - 如何从 Presto 中的前一行获取 date_diff?

javascript - 缩小后标记重新出现

php - 如何强制用户下载图像(如下载 pdf)?

php - Symfony3 缓存(警告 : rename) after update

php - Mysql where子句(查找where表列匹配)

sql - 从 DATETIME 中提取 TIME - informix

php - 使用php创建Excel工作表

mysql - mysql存储过程语法

MYSQL 计数、group by 和 where 子句