首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计数(*) WHERE与SELECT(*) WHERE

计数(*) WHERE与SELECT(*) WHERE
EN

Stack Overflow用户
提问于 2011-08-14 09:09:19
回答 7查看 566关注 0票数 1

我正在建立一个论坛,我试图计算每个用户提交的所有帖子。我应该使用COUNT(*) WHERE user_id = $user_id,或者如果我记录每个用户每次发布帖子并使用SELECT查询查找帖子时有多少帖子,会更快吗?

这会带来多大的性能差异?使用InnoDB和MyISAM存储引擎会有什么不同吗?

EN

回答 7

Stack Overflow用户

发布于 2011-08-14 09:11:04

如果你记录一个用户发了多少帖子,肯定会更快。

如果你在posts表的user字段上有一个索引,你也会得到不错的查询速度。但是,当您的posts表足够大时,它会损害您的数据库。如果你正在计划扩展,那么我绝对建议你保留特定领域的用户帖子的记录。

票数 2
EN

Stack Overflow用户

发布于 2011-08-14 09:10:57

存储预计算值是一种常见且简单但非常有效的优化方法。

因此,只需添加包含用户发布的评论数量的列,并使用触发器或您的应用程序维护它。

性能差异是:

  • 使用COUNT(*)时,您将始终使用索引查找+结果计数
  • 使用附加字段,您将使用索引查找+返回数字(已有答案)。

在这种情况下,myisam和innodb之间没有明显的区别。

票数 0
EN

Stack Overflow用户

发布于 2011-08-14 09:24:43

存储帖子计数。不管存储引擎是什么,这似乎都是一个可伸缩性问题。您是否会在用户每次提交帖子时重新计算计数,还是会在webserver范围之外的某个地方运行一个作业来处理此负载?你的帖子数量是多少?您的服务器可以处理什么类型的负载?我真的不认为存储引擎会成为故障点。我说存储这个值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7054325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档