亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

oracle中in,not in和exists,not exists之間的

系統(tǒng) 1757 0

存在測試IN、NOT IN、EXISTS、NOT EXISTS

例:SELECT * FROM SC WHERE SNO IN

(SELECT SNO FROM STUDENT WHERE SSEX=’女’);

同:SELECT * FROM SC WHERE EXISTS

(SELECT * FROM STUDENT WHERE SSEX=’女’ AND SC.SNO=SNO);

返回所有女生的成績

例:SELECT * FROM SC WHERE SNO NOT IN

????????????????????? (SELECT SNO FROM STUDENT WHERE SSEX=’女’);

同:SELECT * FROM SC WHERE NOT EXISTS

???????? ?????????????(SELECT * FROM STUDENT WHERE SSEX=’女’ AND SC.SNO=SNO);

返回性別不為女的記錄

說明:使用EXISTS相比IN,當(dāng)使用IN檢索到數(shù)據(jù)非常少時,IN比EXISTS快,反之,使用EXISTS比IN快。

如果EXISTS后面的SELECT * 改為SELECT ‘常量’(例如,a, b, c等),速度會更快。

謂詞中含有“全部、至少、沒有”時,使用NOT EXISTS.


oracle中in,not in和exists,not exists之間的區(qū)別 一直聽到的都是說盡量用exists不要用in,因為exists只判斷存在而in需要對比值,所以exists比較快,但看了看網(wǎng)上的一些東西才發(fā)現(xiàn)根本不是這么回事。
下面這段是抄的
Select * from T1 where x in ( select y from T2 )
執(zhí)行的過程相當(dāng)于:
select *
from t1, ( select distinct y from t2 ) t2
where t1.x = t2.y;

select * from t1 where exists ( select null from t2 where y = x )
執(zhí)行的過程相當(dāng)于:
for x in ( select * from t1 )
?? loop
????? if ( exists ( select null from t2 where y = x.x )
????? then
???????? OUTPUT THE RECORD
????? end if
end loop

從我的角度來說,in的方式比較直觀,exists則有些繞,而且in可以用于各種子查詢,而exists好像只用于關(guān)聯(lián)子查詢(其他子查詢當(dāng)然也可以用,可惜沒意義)。
由于exists是用loop的方式,所以,循環(huán)的次數(shù)對于exists影響最大,所以,外表要記錄數(shù)少,內(nèi)表就無所謂了,而in用的是hash join,所以內(nèi)表如果小,整個查詢的范圍都會很小,如果內(nèi)表很大,外表如果也很大就很慢了,這時候exists才真正的會快過in的方式。
???????? 下面這段還是抄的 not in 和not exists
如果查詢語句使用了not in 那么內(nèi)外表都進行全表掃描,沒有用到索引;
而not extsts 的子查詢依然能用到表上的索引。
所以無論那個表大,用not exists都比not in要快。

????????? 也就是說,in和exists需要具體情況具體分析,not in和not exists就不用分析了,盡量用not exists就好了。

典型的連接類型共有3種:
排序 - - 合并連接(Sort Merge Join (SMJ) )
嵌套循環(huán)(Nested Loops (NL) )
哈希連接(Hash Join)

嵌套循環(huán)和哈希連接的算法還是有不同,在理論上哈希連接要快過排序和nl,當(dāng)然實際情況比理論上有復(fù)雜的多,不過兩者還是有差異的

oracle中in,not in和exists,not exists之間的區(qū)別


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 伊人国产精品 | 久久精品国产亚洲综合色 | 天天干天天舔天天射 | 精品在线一区二区三区 | 久久艹伊人| 特级毛片 | 欧美大黄大色一级毛片出红 | 看毛片网| 亚洲18岁禁止 | 在线观看黄色免费视频 | 国产一区二区精品久久凹凸 | 日本一区二区三区高清在线观看 | 日韩每日更新 | 四虎影视永久费观看在线 | 国产精品麻豆a啊在线观看 国产精品麻豆高清在线观看 | 九九激情视频 | 国产91在线九色 | 狠狠涩| 日本在线观看不卡免费视频 | 久久影院一区 | 亚洲欧美日韩国产精品久久 | 亚洲字幕久久 | 国产男女爽爽爽免费视频 | 国产xxxx69免费大片 | 蜜桃精品免费久久久久影院 | 四虎影视国产精品永久在线 | 亚洲欧美高清在线 | 青青久久精品 | 特级生活片 | 国产成人啪精品 | 香港一级a毛片在线播放 | 亚洲精品成人网久久久久久 | 久久久亚洲伊人色综合网站 | 5151四虎永久在线精品免费 | 欧美日韩国产亚洲一区二区三区 | 欧美特级一级毛片 | 99热精品在线观看 | 国产精品久久自在自线观看 | 国产成人精品区在线观看 | 免费在线观看黄色小视频 | 欧美日韩亚洲一区 |