Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 什么';这两个左连接sql查询之间的区别是什么?_Mysql_Sql_Performance - Fatal编程技术网

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