乙個是問in exist的區別,乙個是not in和not exists的區別
把這兩個很普遍性的網友比較關心的問題總結回答一下。
in和exist的區別
從sql程式設計角度來說,in直觀,exists不直觀多乙個select,
in可以用於各種子查詢,而exists好像只用於關聯子查詢
從效能上來看
exists是用loop的方式,迴圈的次數影響大,外表要記錄數少,內錶就無所謂了
in用的是hash join,所以內錶如果小,整個查詢的範圍都會很小,如果內錶很大,外表如果也很大就很慢了,這時候exists才真正的會快過in的方式。
not in和not exists的區別
not in內外表都進行全表掃瞄,沒有用到索引;
not extsts 的子查詢能用到表上的索引。
所以推薦用not exists代替not in
不過如果是exists和in就要具體看情況了
有時間用具體的例項和執行計畫來說明。
總結:
總結:1、 in可能被優化為 連線
2、 in
在未被優化時,外表小,內錶大時(要建臨時表並排序 耗時) 效率低
3、 exists 外表資料量大,速度肯定慢,,即使是in同樣一樣,而對於內錶資料量多少跟索引有關。
4、 in
和 exists 在外表返回的資料量很大時也是低效的。
因此,,外表(驅動表) 應該都盡可能的小。
5、 not in
不走索引的,因此不能用
6、 not exists走索引的。
資料庫中IN和EXISTS的區別
乙個是問in exist的區別,乙個是not in和not exists的區別 把這兩個很普遍性的比較關心的問題總結回答一下。in和exist的區別 從sql程式設計角度來說,in直觀,exists不直觀多乙個select,in可以用於各種子查詢,而exists好像只用於關聯子查詢 從效能上來看 e...
資料庫中的EXISTS語句
exists語句的語法 1 當exists語句中的查詢結果為非空時返回值為true 2 當exists語句中的查詢結果為空時返回值為false exists語句在關係代數中表示存在。什麼時候使用exists語句 1 首先要明確在sql server中帶有in謂詞,比較運算子的查詢語句都可以轉換成ex...
MySQL資料庫中in和exists有什麼區別
偽 如下 select from table a a where a.id in select b.id from table b b 偽 如下 select from table a a where exixts select b.id from table b b where a.id b.id...