2017-02-04 85 views
1

有兩個表格:客戶和訂單。客戶可以有一個或多個訂單。我想了解執行速度方面的差異。任何想法都會對我更好地理解它有用。所以,預先感謝所有回答問題的人。這兩個左連接SQL查詢有什麼區別?

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 
+0

**執行速度** - 兩個查詢不等價,因此比較速度沒有意義。 – GurV

回答

3

首先將充當INNER JOIN。當您在where條款篩選右表從右表中的非匹配NULL記錄將被過濾掉,因爲anything = NULL將失敗

第二個將作爲LEFT JOIN。在連接條件AND orders.status = 1說,與左邊的表

關於有關性能的問題被加入了記錄,正如我上面提到的兩個查詢是不一樣的,所以你不能比較的表現確實

0

第一變成一個INNER JOIN ,因爲對於不匹配的行,orders.customer_idNULL。因此,WHERE子句將全部過濾掉。