将行计数存储在数据库中或动态获取

时间:2015-12-19 21:46:23

标签: php mysql

假设我有一个充满评论的表,每个评论来自不同的用户,我想计算每个用户有多少评论。我是否应该有一个单独的计数表,并在创建/删除评论时更新,或者我应该每次查询计数?

我觉得后者更好,但我想在这个问题上有一些更有经验的意见。感谢。

3 个答案:

答案 0 :(得分:2)

遵循良好的旧YAGNI原则,我建议您现在使用最简单的解决方案,这只是根据需要计算注释的数量。这只是务实的编码。

如果在线下,您发现这导致了甚至很小的性能问题,那么您应该使用存储过程或类似方法将其替换为缓存值,但很可能它会为您提供服务。

所以,我意识到这可能不是你想要的明确答案,但是:如果你要做一些小事,那就选择简单的解决方案(计算);如果您正在制作更大的东西,请使用简单的解决方案(计数),然后升级到更难的解决方案(存储值),如果您发现需要它。如果你知道你所做的事情保证很大(幸运的话!)那么很好,直接去寻找更难的解决方案。

注意:我已经说过更难解决的问题"但是你可能知道它只比简单的解决方案更难。

答案 1 :(得分:1)

创建或删除commnent后,您应该在一小时内计算。

如果你每次都要做一些不必要的查询,你就算数了。

答案 2 :(得分:1)

为每个用户评论执行realloc将是最简单的方法,如下所示:

malloc

每次更新表都会在每次需要查询注释时产生多个MYSQL调用。

或者,您可以在用户中为注释计数创建一个列,并在每次添加注释时为该特定用户添加注释,然后只查询用户您将获得该用户的注释