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