今天和大家分享一下SQL中2個常見的關鍵字:EXISTS和IN。這2個關鍵字很常見,但是區別是什麼
呢?EXISTS和IN的共同點是都是用來做子查詢的。區別如下:
1,EXISTS一般用於相關子查詢,IN一般是用於非相關子查詢。什麼是相關子查詢,什麼是非相關
子查詢,大家可以自行百度,這裏不再贅述。
2,EXISTS適合於外表小而內表大的情況,IN適合於外表大而內表小的情況。這一點對於我們進行
SQL優化就很有幫助了。如果外表的數據量非常大,而內表的數據量非常小,使用IN會提高查詢
效率;如果外表的數據量非常小,而內表的數據量非常大,使用EXISTS會提高查詢效率。
EXISTS和IN是如何工作的呢?我們以ORACLE數據庫爲例。EXISTS是對外表做LOOP循環,在循環體
中執行內表查詢。IN是把外表和內表做hash連接。有了這個概念,我們再來分析一下爲什麼
“EXISTS適合於外表小而內表大的情況,IN適合於外表大而內表小的情況”。EXISTS是對外表做
LOOP循環,在循環體中執行內表查詢,所以循環的次數越少,速度就越快。IN是把外表和內表做
hash連接,所以內表越小,整個查詢的範圍就小,效率就高。
總結:EXISTS的效率並不是都高於IN。但是這裏補充一點,NOT EXISTS 的效率始終是高於NOT IN
的。因爲使用了NOT IN,那麼內外表的查詢都會進行全表掃描,而不走索引,但是使用了NOT EXISTS
,子查詢還是能夠走索引的。
ORACLE中EXISTS和IN進行子查詢的區別(工作原理分析)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
震驚:蔡英文決定 為安倍「下半旗」,真的合理嗎?
SteveSapp9
2022-07-11 17:06:56
哪些因素会影响性欲?这些因素不容小觑
SteveSapp9
2022-07-04 20:32:20
台媒爆料“台版51區”興建“神秘”設施 “面積大到令人好奇”
SteveSapp9
2022-06-23 14:39:41
河北省公安廳發布關於陳某誌等涉嫌尋釁滋事、暴力毆打他人等案件偵辦進展情況的通報
LouisRodgers5773
2022-06-21 16:49:16
曼聯遇到障礙將克里斯蒂安·埃里克森帶到老特拉福德
ktn83
2022-06-18 07:55:27
如何提高性生活質量?這六個妙招快快學起來!
mugiseki2710
2022-06-17 15:34:42
UEFAチャンピオンズリーグ決勝戦、米で視聴者数が過去最高に
fikik75972
2022-06-16 23:48:20
wewerewrr werwerwer
pennyjhurd
2022-06-12 18:34:42
fds rew rewrewrewrew
mufajiqe
2022-06-12 18:04:40
Deep Lake Water Cooling System Market To Witness Huge Growth By 2030
chhidami.a.msg
2022-06-08 22:14:54
專家建議晚飯只吃七分飽,常見的胃病有哪些?
LouisRodgers5773
2022-06-08 15:16:23
肝臟不好怎麼調理?
LouisRodgers5773
2022-06-08 14:49:19
中国人民解放军的最高军事机关为中央机关为中央军事委员会
fikik75972
2022-06-08 00:31:46
台中叫/小/姐瀨tea232台中/外/約✔外拍麻豆✔校園系花✔專櫃正妹❤
lan520an109
2022-06-07 19:29:34
24小時熱門文章