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...