NOT IN 的優化:優化
例如:spa
select ID,name from Table_A where ID not in (select ID from Table_B)
這句是最經典的not in查詢了。改成錶鏈接代碼以下code
將 NOT IN 改成 錶鏈接 的方式進行優化blog
網上有篇帖子這樣的class
select Table_A.ID, Table_A.name from Table_A left join Table_B on Table_A.ID=Table_B.ID and Table_B.ID is null
可是。我試了無論用,條件沒有過濾掉。select
後來我把這個條件加在後邊就能夠了。(多是我SQL語句寫錯了?,反正之後我仍是好幾個地方都用的這種方式)數據
select Table_A.ID, Table_A.name from Table_A left join Table_B on Table_A.ID=Table_B.ID where Table_B.ID is null
其實 我也感受兩種方式同樣,但第一個我當時用的確實沒過濾出來,(那已是好幾個表關聯查詢了)。查詢
OR 的優化:di
IN 和 OR 的優化比較類似co
都採用 關鍵字 UNION 的方式
將OR 的多個條件查分爲多個查詢後使用 UNION 鏈接爲一個臨時表就能夠了。
順帶記錄下 UNION ALL 和 UNION 的區別。
UNION ALL 將上下全部的數據 拼到一塊。
UNION 拼到一塊後對數據進行過濾去重