繁体   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