计数记录与数据库中的计数器变量之间的差异

时间:2013-10-30 13:56:21

标签: sql database performance rdbms redundancy

如果我有一个user表和一个post表,并且我想计算用户今天发布了多少帖子,我可以想到两种方法。

第一种是发送SQL查询来计算今天创建了属于post的{​​{1}}条记录。

第二个是拥有一个user表,其中有三列:countuser_idnum_posts,因此当用户发帖时,{如果date是今天,{1}}会增加,或者只需设置为1,当我们需要计算帖子时,如果日期是今天,我们会简单地检索num_posts,或者说是0.

在我看来,这两种方法都很实用,但我不是数据库专家,对后端数据库的工作原理不太了解,所以我不确定要采取哪种方法(尽管似乎大多数人都已实施)第一个?)。任何人都可以给我一些想法吗?

3 个答案:

答案 0 :(得分:3)

第二种选择更加冗余,除非您遇到第一种性能问题,否则我不建议使用它。 (冗余可能导致不一致,在rdbms世界中很糟糕。)

答案 1 :(得分:2)

如果系统中的用户和帖子数量不是太多,那么第一个应该没问题。但是如果用户和帖子太多,您可能需要考虑第二个选项,因为它会更快。缺点是需要更多空间来存储数据。

答案 2 :(得分:0)

为帖子数量设置一个单独的表将是多余的。您可以通过查询此表或查询post表来获取相同的信息。如果由于性能原因而不需要它,请避免这种情况。