Exists與In的區別

2021-08-31 20:39:13 字數 310 閱讀 6101

最近在check專案的資料庫,check到儲存過程,裡面看到儲存過程有用到in 和 exsits.整理下 in 和 exsits 的區別:

in 是把外表和內錶做hash join,而exists是對外表做loop, 每次loop再對內表進行查詢.如此,exists適合外表結果集很小的情況.其他情況則使用in.

not in 與 not exsits 的區別:

兩者都首先呼叫子查詢,但如果子查詢記錄中有包含空值的記錄.not in 不返回任何值. 所以盡量使用not exsits.

當然如果子查詢欄位有非空限制,這時也可以使用not in.

In與Exists的區別

這兩個函式是差不多的,但由於優化方案不同,通常not exists要比not in要快,因為not exists可以使用結合演算法而not in就不行了,而exists則不如in快,因為這時候in可能更多的使用結合演算法。select from tablea where exists select ...

In與Exists的區別

這兩個函式是差不多的,但由於優化方案不同,通常not exists要比not in要快,因為not exists可以使用結合演算法二not in就不行了,而exists則不如in快,因為這時候in可能更多的使用結合演算法。select from tablea where exists select ...

ORACLE in與exists語句的區別

業務問題大概可以這樣描述,乙個父表,乙個子表,查詢的結果是找到子表中沒有使用父表id的記錄,這種情況估計很多系統都會牽涉得到。讓我們來舉乙個例子 表一 父表 parent 表二 子表 childen 父表儲存父親,子表儲存孩子,然後通過pid和父表關聯,查詢需要的結果是找到尚未有孩子的父親。我們來看...