Mysql 数据库查询——最好是计算行数,还是保留增量计数器?
如果您正在实现一个博客应用程序,您更喜欢什么?Mysql 数据库查询——最好是计算行数,还是保留增量计数器?,mysql,database-design,querying,Mysql,Database Design,Querying,如果您正在实现一个博客应用程序,您更喜欢什么? 在“POSTS”表中有一个计数器,用于存储评论的数量 SELECT comment_count FROM posts WHERE post_id = $id …或从“评论”表中计算特定帖子的评论数: 哪一种更优化?我会使用第二种形式COUNT,直到我确定特定SQL查询中的性能是个问题。你在第一部分中建议的基本上是非规范化,当你确定你需要它时,这是很好的 索引将允许您快速执行第二个查询。让我们看看这些因素 案例1:当你显示帖子时,你会显示评
在“POSTS”表中有一个计数器,用于存储评论的数量
SELECT comment_count
FROM posts WHERE post_id = $id
…或从“评论”表中计算特定帖子的评论数:
哪一种更优化?我会使用第二种形式COUNT,直到我确定特定SQL查询中的性能是个问题。你在第一部分中建议的基本上是非规范化,当你确定你需要它时,这是很好的
索引将允许您快速执行第二个查询。让我们看看这些因素 案例1:当你显示帖子时,你会显示评论。这意味着您可以检索它们,并在显示它们时对它们进行计数。那样的话,没有 案例2:当你显示帖子时,你不显示评论,而是显示一个链接,上面写着“15条评论”。在这种情况下,有一个等式 具体化计数: 保存一条注释的成本=1次插入+1次更新 一次post显示的成本=1次读取 博客显示的平均数量=D 平均评论数=C 那么,显示D与注释C的比率是多少 C*(插入+更新)
这对于一个博客来说可能不太重要,但它是一个关键的公式,可以让你知道什么时候你有很多表,需要做出这些决定。这里回答:@BenV:MySQL还没有实现views@OMG:是的,但是读写的讨论仍然适用。@BenV-我的问题与那个问题有点不同,我不必预先计算任何内容,计算是通过SQL COUNT查询完成的。所以我想知道哪个更好用。
SELECT COUNT(*)
FROM comments
WHERE post_id = $id