in和existis的區別

2021-12-30 02:39:04 字數 854 閱讀 4623

in和existis的區別

in和exists

in 是把外表和內錶作hash 連線,而exists是對外表作loop迴圈,每次loop迴圈再對內表進行查詢。

www.2cto.com  

如果兩個表中乙個較小,乙個是大表,則子查詢表大的用exists,子查詢錶小的用in:

例如:表a(小表),表b(大表)1:select * from a where cc in (select cc from b)

效率低,用到了a表上cc列的索引;select * from a where exists(select cc from b where cc=a.cc)

效率高,用到了b表上cc列的索引。

相反的2:select * from b where cc in (select cc from a)

效率高,用到了b表上cc列的索引;select * from b where exists(select cc from a where cc=b.cc)

效率低,用到了a表上cc列的索引。

not in 和not exists如果查詢語句使用了not in 那麼內外表都進行全表掃瞄,沒有用到索引;而not extsts 的子查詢依然能用到表上的索引。所以無論那個表大,用not exists都比not in要快。

in 與 =的區別

select name from student where name in ('zhang','wang','li','zhao');與

select name from student where name='zhang' or name='li' or

name='wang' or name='zhao'

的結果是相同的。

mysql的 和 的區別 和 的區別

他們之間的區別用最直接的話來說就是 相當於對資料 加上 雙引號,相當於直接顯示資料。1 對傳入的引數視為字串,也就是它會預編譯select from user where name 比如我傳乙個csdn,那麼傳過來就是select from user where name csdn 2 將不會將傳入...

a和 a的區別

這道題目是我在面試的時候碰到的。當時面試官問我的時候,由於我什麼基礎都比較差,我聽到這個問題的時候整個人都傻了。我心想當時學c語言的時候,我只記得老師說這個都代表a陣列的首位址啊,這有什麼區別呢?這道題目,我最終沒有答出來,都怪我太菜了。今天這篇文章就當做是乙個記錄吧,也希望能給還不q清楚的同學一點...

and和or的區別

題目 求結果 a.1 or 2 b.1 and 2 c.1 2 2 d.1 2 2 結果 a 1 b 2 c 0 d 1 總結and和or的用法 and 從左到右,返回第乙個為假的表示式值,無假值則返回最後乙個表示式值。or 從左到右,返回第乙個為真的表示式值,無真值則返回最後乙個表示式值。備註 感...