gpt4 book ai didi

mysql - 在评论系统中做一个 'count'栏是不是一个好办法?

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:55 24 4
gpt4 key购买 nike

在我的系统中,有实体(帖子)和评论。

假设有两个表:“评论”表和“实体”表

Comments 表有一个引用实体的外键,称为 entity_id

有一件事我很担心,那就是我经常需要连同实体一起获取评论数,而我正在使用 LEFT JOIN 来获取评论数。

SELECT entities.*, comment_count FROM entities LEFT JOIN 
(SELECT entity_id,count(id) AS comment_count FROM comments GROUP BY entity_id)
AS entity_comment ON entity_comment.entity_id = entities.id

但是每次都使用 LEFT JOIN 和 COUNT 感觉有点浪费服务器资源和代码量,

所以我尝试在实体表中添加一个“comment_count”列,这样我就可以轻松获得评论计数而无需连接,每次更改时更新它们。

我想知道这样做是否正确(或有效)。

如果有更好的解决方案,请告诉我。

最佳答案

这是一个困惑的局面。 LEFT 是必需的,因为评论可能为零。但是 LEFT 可能优化不好。试试这个:

SELECT  e.*, 
( SELECT COUNT(*)
FROM comments
WHERE entity_id = e.id
) AS comment_count
FROM entities e

并确保在评论上有INDEX(entity_id)

关于mysql - 在评论系统中做一个 'count'栏是不是一个好办法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com