1. on where過濾是非分明
在left join時候 過濾條件在on中和在where中有天壤之別,on中不會做過濾,只是影響非驅動表所有字段在不滿足條件時的取值,但是where會做記錄的去除
2. in not in if()對于null值的問題
tableA.name not in ('xx') 和tableA.name in ('xxx',null),都會將name值為null的排除掉;if(null,1,0)返回0。null =null 返回null,切忌判斷null使用is。
3. join優(yōu)化
join時候小表在前,大表在后;如果驅動表夠小,建議做map端join優(yōu)化