2019獨角獸企業重金招聘Python工程師標準>>>
left join 和 inner join
首先 MySQL 中 inner join 的效率確實要高于 left join。所以沒必要使用 left join 轉彎成 inner join 的效果。這樣不但效率降低,可讀性也會降低。
?
Number1
select?
from t1 left join t2?
where t2.field = value?
?
Number2
select?
from t1 left join t2 ?and?t2.field = value
?
這兩種寫法涉及到一個條件位置不同查詢結果就不一致的問題,Number1的意思其實和使用 inner join 效果是一致的,因為他對連接的結果做了過濾;
Number2 則是先對 t2 做過濾,然后再連接,所以他的結果集要大于 Number1,換句話說Number2的條件是強加在 t2 上的,而不是整個結果集。
另外,如果把查詢條件改為?t2.field? is ?null ; 前者與后者的結果是一致的,都是表示存在 t1 不存在 t2,所以這個比較特殊。
總之盡量不要使用 left join,除非業務需要,否則盡量使用 inner join.