in和exists的SQL執行效率分析

2021-08-25 10:06:44 字數 461 閱讀 1024

in和exists的sql執行效率分析

a,b兩個表,

(1)當只顯示乙個表的資料如a,關係條件只乙個如id時,使用in更快:

select * from a where id in (select id from b)

(2)當只顯示乙個表的資料如a,關係條件不只乙個如id,col1時,使用in就不方便了,可以使用exists:

select * from a

where exists (select 1 from b where id = a.id and col1 = a.col1)

(3)當只顯示兩個表的資料時,使用in,exists都不合適,要使用連線:

select * from a left join b on id = a.id

(4)兩者的區別:

exists:後面可以是整句的查詢語句

in:後面只能是對單列

sql語句in和exists的效率

select a.from a where exists select 1 from b where a.id b.id 和select a.from a where a.id in select b.id from b 的效率比較 1.如果子查詢得出的結果集記錄較少,主查詢中的表較大且又有索引時應...

sql中in和exists的區別

in是把外表和內錶作hash連線,而exists是對外表作loop迴圈,每次loop迴圈再對內表進行查詢,一直以來認為exists比in效率高的說法是不準確的。如果查詢的兩個表大小相當,那麼用in和exists差別不大 如果兩個表中乙個較小乙個較大,則子查詢表大的用exists,子查詢錶小的用in ...

SQL中in和exists的區別

in和exists in 是把外表和內錶作hash 連線,而exists是對外表作loop迴圈,每次loop迴圈再對內表進行查詢。in parm1,parm2.parm是有個數限制的 如果兩個表中乙個較小,乙個是大表,則子查詢表大的用exists,子查詢錶小的用in 例如 表a 小表 表b 大表 1...