首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >存储行数还是只计算行数?

存储行数还是只计算行数?
EN

Stack Overflow用户
提问于 2012-03-01 15:10:31
回答 2查看 488关注 0票数 1

为了举例说明我的情况,请考虑一个像堆栈溢出这样的问答平台。基本上有questionsanswers表。显示特定问题答案的数量的最佳做法是什么?

  • questions表中是否应该有“计数列”?每次添加或删除新答案时,都应更新“计数列”。
  • 还是使用MySQL在answers表中计算答案的行数?我在这个选项中关注的是对数据库的负载,但我不确定。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-01 15:13:29

我不会担心数据库上的负载,除非你真的发现它是个问题。事实上,保持计数的选择需要对每个CRUD操作进行额外的更新,所以我认为这比偶尔的计数开销更大。首先使用接吻,如果您发现问题,然后修复它:)

票数 4
EN

Stack Overflow用户

发布于 2012-03-01 15:59:43

现在,我将保持简单,并使用COUNT返回行,但您应该注意到一些注意事项。

MySQL能够为COUNT(*)查询使用索引,因此MySQL不必按下实际的表行数据来获取计数。请注意,如果您尝试对允许空值的列进行COUNT(column)查询,则MySQL仍然必须扫描行才能计数空值,因为空值并不存储在索引中。

因此,请确保对定义为NULL的列请求COUNT

MyISAM表存储行计数,因此表中所有行的计数(*)查询都是超级轻量级的。这是可能的,因为MyISAM会锁定整个表,从而强制进行顺序更新。因此,MyISAM总是知道有多少行。

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

https://stackoverflow.com/questions/9518637

复制
相关文章

相似问题

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