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

时间:2015-02-12 01:09:01

标签: php mysql sql performance pdo

哪种是最佳做法?

场景:如果我有2个表,一个称为topics,另一个称为posts,每个帖子属于特定的topic_id

最好在名为topics的{​​{1}}表中添加一个列,只要在post_count下创建/删除帖子,我就会更新。

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

效率是否有任何缺点或差异?

1 个答案:

答案 0 :(得分:3)

在列上存储post_countdenormalisation

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

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