gpt4 book ai didi

MySQL 替代嵌套查询?

转载 作者:行者123 更新时间:2023-11-29 05:27:17 26 4
gpt4 key购买 nike

我读到过使用嵌套查询不是一个好主意,据说嵌套查询会大大降低 mysql 的速度等等,所以我认为我不应该使用嵌套查询,但真正的替代方法是那个?

例如,我有一个评论评分系统,它有助于将评分最高的评论排在最前面,它会出现在 2 个表格中:

comments 存储评论
comment_ratings 存储评论 ID 和评分者。

注意:只有正面评级,因此如果 comment_ratings 表中存在记录,则它会 +1。

所以现在如果我想收集一些我喜欢的东西的评论

SELECT stuff, (SELECT COUNT(*) FROM comment_ratings s WHERE s.id = c.id) as votes
FROM comments c
ORDER BY votes DESC

如果不使用嵌套查询,我将如何做到这一点?

最佳答案

嵌套查询是好是坏,要视情况而定。在您的特定示例中,如果您在 comment_ratings(id) 上有一个索引,那么可能没有问题。也许那应该是 comment_ratings(comment_id) —— 这些表的命名约定很差。

您可以将其替换为聚合查询:

select c.*, count(cr.id) as votes
from comments c left join
comment_ratings cr
on c.id = cr.id
group by c.id
order by votes desc;

但是,由于 MySQL 实现 group by 的方式,这可能比您的原始查询执行得更差。我更喜欢 group by。对我来说,它更清楚地描述了你想要什么,大多数其他数据库引擎都能很好地优化它。

关于MySQL 替代嵌套查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728501/

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