gpt4 book ai didi

mysql - 左/右连接性能

转载 作者:行者123 更新时间:2023-11-29 05:04:24 28 4
gpt4 key购买 nike

left 和 right join 有区别吗,下面的sql 语句结果一样,但是两者的性能是一样的吗?

SELECT count(*)
FROM writers
RIGHT JOIN blogs ON blogs.members_id = model_id
WHERE member_id = 123 AND blogs.status = 1;



SELECT count(*)
FROM blogs
LEFT JOIN writers ON writers.model_id = blogs.members_id
WHERE writers.member_id = 123
AND blogs.status = 1;

最佳答案

完全没有区别。两者都在实现内部联接。嗯?您认为您指定了一个 outer join,但您的 where 子句正在撤消它。

据推测,您打算:

SELECT count(*)
FROM blogs b LEFT JOIN
writers w
ON w.model_id = b.members_id AND w.member_id = 123
WHERE b.status = 1;

尽管您可以将其写成RIGHT JOIN,但我强烈反对这样做。以下是一些原因:

  • SQL 是从左到右阅读的。遵循“保留第一个表中的所有行”比“保留最后一个表中我尚未阅读的所有行”更容易。
  • SQL 是从左到右解析的。对于单个连接,这没有区别。但是对于多个连接,A LEFT JOIN B LEFT JOIN C 和 C RIGHT JOIN B RIGHT JOIN A 之间存在细微差别。

关于mysql - 左/右连接性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51357104/

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