SQL語句中IN和EXISTS的效率問題

2021-09-08 20:17:12 字數 435 閱讀 5056

in

select * from a where id in (select id from b);
此處select id from b只會執行一次,將所有資料快取到記憶體,然後遍歷a表中的每條資料進行判斷是否存在。

exist

select * from a as a where exists(select id from b as b where a.id = b.id);
此處一條條取出a表中的資料,拿著每一條去遍歷b表中的每一條資料,一旦找到一條符合條件,就返回true,那麼a中這條id的資料就會被取出來。

可以看出,如果b表比較小,那麼適合用in:

如果b表很大,那麼適合用exists:

ok?

sql語句中的exists和in

比如在northwind資料庫中有乙個查詢為 select c.customerid,companyname from customers c where exists select orderid from orders o where o.customerid c.customerid 這裡面的...

sql語句中exists和in的區別和應用

表展示 首先,查詢中涉及到的兩個表,乙個user和乙個 order 表,具體表的內容如下 user表 order表 確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然後將內錶和外表做乙個笛卡爾積,然後按照條件進行篩選。所以相對內錶比較小的時候,in的速度較快。具體s...

SQL語句中in 與 exists的區別

sql語句中in 與 exists的區別 sql中exists檢查是否有結果,判斷是否有記錄,返回的是乙個布林型 true false in是對結果值進行比較,判斷乙個字段是否存在於幾個值的範圍中 exists主要用於片面的,有滿足乙個條件的即可,in主要用於具體的集合操作,有多少滿足條件 in適合...