1

要获得用户的平均评分,我应该每次运行 SQL 查询来计算来自不同表的平均值,还是将当前平均值存储在用户的配置文件中以便于使用?

更加具体...

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

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

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

4

2 回答 2

1

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

如果我是你,我会怎么做

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

在您真正遇到性能瓶颈之前,我会忽略数据库必须处理的查询数量。否则,您将面临过早优化的严重风险(正如我们所知,这是万恶之源)。

现在,只需选择简单的选项:

  • 您最熟悉的那个(因此,将为其创建最佳解决方案)
  • 现在涉及编写更少代码的那个(通常,您编写的代码越少,您可以创建的错误就越少)
  • 您可以尽快完成并继续下一项任务的任务(或今天早点回家)
  • 对于将来必须维护您的代码的其他开发人员来说,这将更加清晰

之类的东西。

于 2013-11-11T01:34:53.803 回答