将用户的“评级”存储在配置文件中或不断运行SQL查询以从单独的表中获取平均值

时间:2013-11-11 01:18:25

标签: php mysql sql

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

更具体......

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

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

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

2 个答案:

答案 0 :(得分:1)

这是一种很好的思考方式。该术语称为“开销”。这是系统资源在您的应用程序中占用的多少。

如果我是你,我会怎么做?

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

答案 1 :(得分:0)

在实际遇到性能瓶颈之前,我会忽略数据库必须处理多少查询。否则,您将面临过早优化的严重风险(正如我们所知,这是root of all evil)。

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

  • 您最熟悉的那个(因此,将创建最佳解决方案)
  • 现在涉及编写较少代码的一方(一般来说,您编写的代码越少,您可以创建的错误越少)
  • 你可以提早完成并继续下一个任务(或今天早点回家)
  • 将来必须维护代码的其他开发人员更清楚

那种事。