假设有用户,帖子和类似的表,并且像表有user_id和post_id外键来表示谁喜欢哪个帖子。在post中使用like_count列(并通过类似表中的触发器命令更新它)或每次我需要查询类似计数时使用join命令更好吗?
我首先认为使用join命令更好,但是在使用它一段时间之后,现在我认为拥有like_count可能是更好的选择。有时候我需要在实际情况下加入很多表,并且使用额外的join命令只获得某些帖子的数量似乎比使用count_post列更糟糕。请告诉我。
*我搜索了类似的讨论,但失败了所以我发布了这个问题。如果这是重复的,请告诉我。
答案 0 :(得分:0)
您在询问以下两个查询之间的区别:
SELECT post_id, COUNT(user_id)
FROM like
GROUP BY post_id;
SELECT post_id, like_count
FROM post;
假设每次在like_count
表中创建一行时,您都在递增like
。
另请注意,连接不是获取计数所必需的,因为您可以仅通过对like
表执行GROUP BY来获取它。
它是一种常见的非规范化形式,用于计算聚合(如计数)并存储它。
严格地说,这是冗余信息,这会产生数据异常的可能性。您的代码有时可能无法更新like_count
,然后计数将不准确。
如果您愿意接受此风险,那么您可以避免在每次需要计数时进行汇总查询。