sql 中的left join 怎么样执行的

MySql 码拜 8年前 (2016-02-17) 931次浏览
SELECT
e.name,
e.id,
ew.*,
w.*
FROM
enterprise e
LEFT JOIN enterprise_webapp ew
ON e.id = ew.enterprise_id
LEFT JOIN webapp w
ON ew.webapp_id = w.id
这条sql语句中的e表左连接ew表,而ew表又左连接w表,本人想问一下,数据库引擎是怎么样执行这条sql语句的,先执行哪个左连接
解决方案

5

FROM
enterprise e
LEFT JOIN enterprise_webapp ew
ON e.id = ew.enterprise_id
LEFT JOIN webapp w
ON ew.webapp_id = w.id
这个先执行哪个,不一定的,你可以看看执行计划:
explain SELECT
e.name,
e.id,
ew.*,
w.*
FROM
enterprise e
LEFT JOIN enterprise_webapp ew
ON e.id = ew.enterprise_id
LEFT JOIN webapp w
ON ew.webapp_id = w.id

10

你的理解有问题,两个left join 的时候,第一个left join 会生成一个虚拟表,然后        虚拟表    left join      第三个表      在去查询

5

先连接前面两个,然后前面两个的集连接第三个

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明sql 中的left join 怎么样执行的
喜欢 (0)
[1034331897@qq.com]
分享 (0)