看到一個挺有意思的SQL知識點,分享一下~
有人問了IN和EXISTS的區別,我來簡單說說我的理解哈。
EXISTS后面跟的是子查詢,作用是檢查有沒有符合條件的行存在,返回的結果只有true或false。執行順序是先跑主查詢,然后每一行去子查詢里找有沒有對應的記錄,有就顯示這條數據,沒有就不顯示。總的來說就是有沒有,有就有。
而IN后面的子查詢是會先執行完,把結果集都查出來,主查詢再從這個結果集里去找匹配的數據。IN是在不在這個列表里,所以效率上可能比EXISTS差點意思,特別是數據量大的時候。
總結一句:EXISTS看是否存在,IN看是否在列表里。用對了效率差很多!
有人問了IN和EXISTS的區別,我來簡單說說我的理解哈。
EXISTS后面跟的是子查詢,作用是檢查有沒有符合條件的行存在,返回的結果只有true或false。執行順序是先跑主查詢,然后每一行去子查詢里找有沒有對應的記錄,有就顯示這條數據,沒有就不顯示。總的來說就是有沒有,有就有。
而IN后面的子查詢是會先執行完,把結果集都查出來,主查詢再從這個結果集里去找匹配的數據。IN是在不在這個列表里,所以效率上可能比EXISTS差點意思,特別是數據量大的時候。
總結一句:EXISTS看是否存在,IN看是否在列表里。用對了效率差很多!