mysql - 这两个 left join sql 查询有什么区别?

标签 mysql sql performance

有两个表:客户和订单。客户可以有一个或多个订单。我想了解执行速度方面的差异。任何想法都会对我更好地理解它有用。所以,提前感谢所有回答的人。

1)

SELECT `customers`.* FROM `customers`
 LEFT JOIN `orders` ON `orders`.`customer_id` = `customers`.`id`
 WHERE `orders`.`status` = 1

2)

SELECT `customers`.* FROM `customers`
 LEFT JOIN `orders` ON `orders`.`customer_id` = `customers`.`id` AND `orders`.`status` = 1

最佳答案

第一个将充当 INNER JOIN。当您在 where 子句中过滤右表时,右表中不匹配的 NULL 记录将被过滤,因为 anything = NULL 会失败

第二个将用作 LEFT JOIN。在连接条件中 AND orders.status = 1 表示要与左表连接的记录

关于性能问题,正如我上面提到的,两个查询都不相同,因此您无法真正比​​较性能

关于mysql - 这两个 left join sql 查询有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42041749/

相关文章:

mysql - MySQL 中何时使用单引号、双引号和反引号

php - 在 php 中查询下拉列表中的选定项目

mysql - 如何在 UNION 中使用 ORDER BY

performance - Spray-client 在发出更多并发请求时抛出 "Too many open files"异常

performance - R中的预分配列表

mysql - 如何使用 emacs 和 mysql

php - 我想在sql中的两个日期之间搜索

mysql - SQL 在删除前创建触发器与在删除时创建外键

mysql - 我怎样才能进入前十名?

java - Matlab 与 Java