每次对count_comments列中的缓存进行COUNT()注释,并使用其他类型的缓存

时间:2015-06-03 20:58:44

标签: mysql caching count

我有一个共同的疑问。

猜猜我正在创建一个包含帖子的社交网络或博客,每个帖子都有评论。

如果我想分页并过滤帖子列表并显示每篇帖子的评论数量

我应该在我的帖子表中添加count_comments列(就像WP一样)并在那里缓存注释量(例如,如果有人将注释sub 1删除到count_comments列,则每次有人注释添加1)

我是否应该执行SUBSELECT以每次计算注释量,然后使用其他表单缓存结果或缓存

或者你推荐什么?

2 个答案:

答案 0 :(得分:0)

绝对使用触发器缓存它们,对未来安全且高效。但请记住,你不需要计数分页,也许只是为了显示一些统计数据

答案 1 :(得分:0)

简而言之:两者都有效,两种变体都有其优点和缺点。

你几乎肯定会有两种方式的论据。

如果您经常需要注释计数,并且需要很多系统/应用程序资源来使用简单的sql语句获取该值(通过该值排序可能会很麻烦),将值存储在像WordPress这样的字段中是一种方法。

如果您不经常需要评论计数,和/或它不需要很多资源来获取值(SELECT COUNT(*) FROM yourcommenttable WHERE yourpostid = whatever对于大多数系统来说不应该太难),您可能会受益更多,同时避免问题使价值与帖子中的实际评论保持同步。