Mysql 什么';这两个左连接sql查询之间的区别是什么?
有两个表:客户和订单。客户可以有一个或多个订单。我想了解执行速度方面的差异。任何想法都有助于我更好地理解它。所以,提前感谢所有回答的人 (一) (二)Mysql 什么';这两个左连接sql查询之间的区别是什么?,mysql,sql,performance,Mysql,Sql,Performance,有两个表:客户和订单。客户可以有一个或多个订单。我想了解执行速度方面的差异。任何想法都有助于我更好地理解它。所以,提前感谢所有回答的人 (一) (二) 第一个将充当内部联接。当您在where子句中筛选正确的表时,将筛选正确表中不匹配的NULL记录,因为任何=NULL都将失败 第二个将用作左连接。在联接条件和orders.status=1中,表示要与左表联接的记录 关于性能问题,正如我上面提到的,两个查询都不相同,因此您无法真正比较性能第一个查询变成了一个内部联接,因为对于不匹配的行,orders
第一个将充当
内部联接
。当您在where
子句中筛选正确的表时,将筛选正确表中不匹配的NULL
记录,因为任何=NULL
都将失败
第二个将用作左连接。在联接条件和orders.status=1中,表示要与左表联接的记录
关于性能问题,正如我上面提到的,两个查询都不相同,因此您无法真正比较性能第一个查询变成了一个内部联接
,因为对于不匹配的行,orders.customer\u id
为NULL
。因此,WHERE
子句将过滤掉所有查询。执行速度-这两个查询不相等,因此比较速度没有意义。
SELECT `customers`.* FROM `customers`
LEFT JOIN `orders` ON `orders`.`customer_id` = `customers`.`id`
WHERE `orders`.`status` = 1
SELECT `customers`.* FROM `customers`
LEFT JOIN `orders` ON `orders`.`customer_id` = `customers`.`id` AND `orders`.`status` = 1