【发布时间】:2013-09-11 05:10:52
【问题描述】:
我读过使用嵌套查询不是一个好主意,据说嵌套查询会大大降低 mysql 的速度,所以我想我不应该使用嵌套查询,但真正的替代方法是那个?
例如,我有一个 cmets 评分系统,它有助于将最受好评的 cmets 带到顶部,它分为 2 个表格:
comments 存储 cmetscomment_ratings 存储评论 ID 和对其进行评分的人。
注意:只有正面评价,因此如果comment_ratings 表中存在记录,则其+1。
所以现在,如果我想为一些东西买 cmets,我会去的
SELECT stuff, (SELECT COUNT(*) FROM comment_ratings s WHERE s.id = c.id) as votes
FROM comments c
ORDER BY votes DESC
如果不使用嵌套查询,我将如何做到这一点?
【问题讨论】:
-
两个答案给你基本思路。请注意,有时 DBMS 无论如何都会将子查询优化为连接。正确使用连接是一个好习惯,而且我个人首先采用这种方式,然后如果优化得更好,可能会返工。作为一项规则,我发现列的子查询不如连接可读,但这就是我。