为了举例说明我的情况,请考虑一个像堆栈溢出这样的问答平台。基本上有questions
和answers
表。显示特定问题答案的数量的最佳做法是什么?
questions
表中是否应该有“计数列”?每次添加或删除新答案时,都应更新“计数列”。answers
表中计算答案的行数?我在这个选项中关注的是对数据库的负载,但我不确定。发布于 2012-03-01 15:13:29
我不会担心数据库上的负载,除非你真的发现它是个问题。事实上,保持计数的选择需要对每个CRUD操作进行额外的更新,所以我认为这比偶尔的计数开销更大。首先使用接吻,如果您发现问题,然后修复它:)
发布于 2012-03-01 15:59:43
现在,我将保持简单,并使用COUNT
返回行,但您应该注意到一些注意事项。
MySQL能够为COUNT(*)
查询使用索引,因此MySQL不必按下实际的表行数据来获取计数。请注意,如果您尝试对允许空值的列进行COUNT(column)
查询,则MySQL仍然必须扫描行才能计数空值,因为空值并不存储在索引中。
因此,请确保对定义为NULL的列请求COUNT
。
MyISAM表存储行计数,因此表中所有行的计数(*)查询都是超级轻量级的。这是可能的,因为MyISAM会锁定整个表,从而强制进行顺序更新。因此,MyISAM总是知道有多少行。
https://stackoverflow.com/questions/9518637
复制相似问题