2016-03-22 68 views
0

我工作的用户评论与此列:用户数据库模式的评论

  • PRODUCT_ID
  • 通信
  • 清洁
  • 位置

每列从1-5开始编号。我的问题是如何计算每个列的平均等级,而不用从数据库中调用所有评论并每次计算它。

所以我想就摆在产品表:

  • communication_sum_of_grades
  • communication_number_of_reviews
  • ...等

,比做: 平均= communication_sum_of_grades/communication_number_of_reviews

我的问题是如果这是正确的方法?

+0

不会使用SQL引擎的'COUNT'和'AVG'函数更有效吗? – Lex

+0

嗯,我不确定在用户提交评论时,增加communication_sum_of_grades和communication_number_of_reviews可能会更快,然后每次有人打开产品时都会进行sql查询...... – DokiCRO

+0

以这种方式计算平均值可能会更快,但速度不会更快。真正的问题是,如果你真的需要这种性能的轻微增加,并且你意识到你正在引入一个潜在的失败点,那么你可以在你的数据库中插入新的列并将逻辑修改到你的应用程序中。 – infiniteRefactor

回答

1

如果有large number of records和查询平均评语是very frequent那么你的方法将efficient因为在这种情况下,写作将是一个touch heavybut reading will be very fast。但是,如果查询的平均评价不是那么频繁,那么你可以采用三种方法获取所有行并找到avarage。

希望它有帮助:)