计数与存储帖子数量

时间:2011-10-15 21:52:30

标签: php database performance

所以这更像是一个普遍的问题。这是合约。

所以我创建了一个Web应用程序,需要知道用户为奖励系统发布了多少帖子。获得的奖励越多,就越多。

问题是,我不知道什么是更好的解决方案。

  1. 一种解决方案是存储数据库中的帖子数量,然后检索哪些是我倾向于的,因为这似乎会减少对数据库的访问次数。

  2. 另一种选择是动态计算帖子数量,这很容易。但是,这意味着每次刷新页面时我都必须重新计算数据。当然,你可以很聪明地做到这一点,只有在添加新帖子时它才会计算,但这需要更多的工作。

  3. 现在我对这两种解决方案都没有问题。事实上,我之前已经实现了这两个解决方案,但是我想知道是否有人可以告诉我哪个更好,或者如果他们有另一个解决方案。

4 个答案:

答案 0 :(得分:2)

我会说,在用户发布帖子数量并在每次发布时递增它会减少数据库的压力,并且比你计算所有帖子所花费的更新和查询所需的加载时间更少。 ...

答案 1 :(得分:2)

这是一个非常主观的问题。一般来说,每次计算帖子需要更长时间,但对于少量帖子,实际上可能会更糟。我的建议是描述你的申请。在数据库中加载10,100,500,1000个帖子并尝试每种方法。然后从那里去。我相信这里会涉及到缓存。另请参阅APC缓存,您可以使用它来存储您拥有的帖子数量,并在以后从PHP中检索它。

答案 2 :(得分:2)

我会一直选择您的第一个选项,并根据您已经提供的原因存储帖子数量以及更多:

如果在将来某个时间点您打算清理帖子数据库并清除旧帖子,您的用户将不会丢失其当前计数。此外,您可以灵活地通过为“更好”的帖子提供积分来增强奖励系统,为正常的帖子提供更少的积分。您还可以手动调整点数据,而无需寻找他们的帖子。

此外,您可能不知道您的电路板系统会有多成功。也许在未来的某个时间,可能需要花费很长时间来计算动态值。

答案 3 :(得分:1)

在不了解您的系统的情况下,我认为结合两种选择的解决方案可能是值得尝试的。考虑创建一个生成这些计数的cron作业并将它们存储在表中。然后,在查找帖子计数时,您将参考该表。您不会立即获得最新的结果,但您可能不需要它们。