我应该使用列来计算行数还是在 PHP 中计算它们?

Should I use a column to count rows or count them in PHP?

哪个是最佳做法?

场景:如果我有 2 个 table,一个叫 topics,另一个叫 posts,每个 post 属于一个特定的 topic_id

是否最好在 topics table 中有一列称为 post_count,每当 post 是 created/delete 时,我都会更新该列topic_id.

或者最好使用 SELECT COUNT 查询来计算 topic_id 匹配的行数?

两者有什么缺点或效率差异吗?

在列上存储 post_countdenormalisation

查找单个字段的读取性能比执行 SELECT COUNT 更快,但大多数人会同意这是引入更新异常可能性的过早优化。数据库应存储规范化(即非冗余)数据,除非您有基准表明这是应用程序的性能瓶颈。

通过查看数据库和应用程序之间的缓存层,您可能会得到更好的服务,这样每次查询数据库时都不会执行计数,但会在 posts 的内容时更新更改 - 您甚至可能会发现 MySQL 是 already caching the result.