如果我有一个user
表和一个post
表,并且我想计算用户今天发布了多少帖子,我可以想到两种方法。
第一种是发送SQL查询来计算今天创建了属于post
的{{1}}条记录。
第二个是拥有一个user
表,其中有三列:count
,user_id
和num_posts
,因此当用户发帖时,{如果date
是今天,{1}}会增加,或者只需设置为1,当我们需要计算帖子时,如果日期是今天,我们会简单地检索num_posts
,或者说是0.
在我看来,这两种方法都很实用,但我不是数据库专家,对后端数据库的工作原理不太了解,所以我不确定要采取哪种方法(尽管似乎大多数人都已实施)第一个?)。任何人都可以给我一些想法吗?
答案 0 :(得分:3)
第二种选择更加冗余,除非您遇到第一种性能问题,否则我不建议使用它。 (冗余可能导致不一致,在rdbms世界中很糟糕。)
答案 1 :(得分:2)
如果系统中的用户和帖子数量不是太多,那么第一个应该没问题。但是如果用户和帖子太多,您可能需要考虑第二个选项,因为它会更快。缺点是需要更多空间来存储数据。
答案 2 :(得分:0)
为帖子数量设置一个单独的表将是多余的。您可以通过查询此表或查询post表来获取相同的信息。如果由于性能原因而不需要它,请避免这种情况。