SQL server的Exist與in區別


 

Exists:將外查詢表的每一行,代入內查詢作為檢驗,如果內查詢返回的結果取非空值,則EXISTS子句返回TRUE,這一行行可作為外查詢的結果行,否則不能作為結果。

 

區別:

IN表是外邊和內表進行hash連接,是先執行子查詢。
EXISTS是對外表進行循環,然后在內表進行查詢。

 

適用范圍:
當查詢字段進行了索引時,主表 A 大於從表 B,使用 IN 子查詢效率更高,相反主表 A 小於從表 B 時,使用 EXISTS 子查詢效率更高 


IN有一個缺陷是不能判斷NULL,因此如果字段存在NULL值,則會出現返回,因為最好使用NOT EXISTS。

 

下面是SQL Server的執行計划:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM