NOT IN 和 OR 的SQL語句優化

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  拼到一塊後對數據進行過濾去重

相關文章
相關標籤/搜索