我应该使用列来计算行数还是在 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_count
是 denormalisation。
查找单个字段的读取性能比执行 SELECT COUNT
更快,但大多数人会同意这是引入更新异常可能性的过早优化。数据库应存储规范化(即非冗余)数据,除非您有基准表明这是应用程序的性能瓶颈。
通过查看数据库和应用程序之间的缓存层,您可能会得到更好的服务,这样每次查询数据库时都不会执行计数,但会在 posts
的内容时更新更改 - 您甚至可能会发现 MySQL 是 already caching the result.
哪个是最佳做法?
场景:如果我有 2 个 table,一个叫 topics
,另一个叫 posts
,每个 post 属于一个特定的 topic_id
。
是否最好在 topics
table 中有一列称为 post_count
,每当 post 是 created/delete 时,我都会更新该列topic_id
.
或者最好使用 SELECT COUNT 查询来计算 topic_id
匹配的行数?
两者有什么缺点或效率差异吗?
在列上存储 post_count
是 denormalisation。
查找单个字段的读取性能比执行 SELECT COUNT
更快,但大多数人会同意这是引入更新异常可能性的过早优化。数据库应存储规范化(即非冗余)数据,除非您有基准表明这是应用程序的性能瓶颈。
通过查看数据库和应用程序之间的缓存层,您可能会得到更好的服务,这样每次查询数据库时都不会执行计数,但会在 posts
的内容时更新更改 - 您甚至可能会发现 MySQL 是 already caching the result.