主頁 > 知識庫 > 簡述Oracle中in和exists的不同

簡述Oracle中in和exists的不同

熱門標(biāo)簽:百度競價(jià)排名 呼叫中心市場需求 AI電銷 網(wǎng)站排名優(yōu)化 鐵路電話系統(tǒng) Linux服務(wù)器 地方門戶網(wǎng)站 服務(wù)外包

一直以來,大家認(rèn)為exists比in速度快,其實(shí)是不準(zhǔn)確的。且看接下來的具體分析:in其實(shí)是將外表和內(nèi)表進(jìn)行hash join,exists是先對外表進(jìn)行l(wèi)oop操作,然后每次loop后再對內(nèi)表進(jìn)行查詢。

如果兩張表大小差不多,那么exists和in的效率差不多。

例如: 一張大表為A,一張小表B

一、第一種情況

select * from A where mm in (select mm from B)

效率高,這里用到的是大表A上的索引

select * from B exists (select mm from A where mm=B.mm)

效率高,這里用到的是小表B上的索引

二、第二種情況

select * from B where mm in (select mm from A)

效率低,這里用到的是小表B上的索引

select * from A exists (select mm from B where mm=A.mm)

效率高,這里用到的是大表A上的索引

三、第三種情況

not exists 在使用時(shí)依然會用到表上的索引,但是not in會進(jìn)行全盤掃描

因此,not exists 始終比not in 的效率高

四、第四種情況

in與==效果是相同的

總結(jié)

以上所述是小編給大家介紹的Oracle中in和exists的不同,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • Oracle In和exists not in和not exists的比較分析
  • Plsql Developer連接Oracle時(shí)出現(xiàn)Could not initialize oci.dll解決方案
  • Oracle minus用法詳解及應(yīng)用實(shí)例
  • linux系統(tǒng)oracle數(shù)據(jù)庫出現(xiàn)ora12505問題的解決方法
  • oracle中not exists對外層查詢的影響詳解

標(biāo)簽:黃山 湘潭 仙桃 湖南 衡水 蘭州 銅川 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《簡述Oracle中in和exists的不同》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266