sql 中的in和exists的區別

2021-09-01 06:57:27 字數 349 閱讀 8992

in

確定給定的值是否與子查詢或列表中的值相匹配。

exists

指定乙個子查詢,檢測行的存在。

比較使用 exists 和 in 的查詢

exists()後面的子查詢被稱做相關子查詢   他是不返回列表的值的.只是返回乙個ture或false的結果,其執行方式是先執行主查詢一次   再去子查詢裡查詢與其對應的結果   如果是ture則輸出,反之則不輸出.再根據主查詢中的每一行去子查詢裡去查詢.  

in()後面的子查詢   是返回結果集的,換句話說執行次序和exists()不一樣.子查詢先產生結果集,然後主查詢再去結果集裡去找符合要求的字段列表去.符合要求的輸出,反之則不輸出.

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

SQL中IN和EXISTS用法的區別

not in select distinct md001 from bommd where md001 not in select mc001 from bommc not exists,exists的用法跟in不一樣,一般都需要和子表進行關聯,而且關聯時,需要用索引,這樣就可以加快速度 selec...