<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    月掛夜中央

    懶惰程序員

    常用鏈接

    統計

    最新評論

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

             一直聽到的都是說盡量用exists不要用in,因為exists只判斷存在而in需要對比值,所以exists比較快,但看了看網上的一些東西才發現根本不是這么回事。
    下面這段是抄的
    Select * from T1 where x in ( select y from T2 )
    執行的過程相當于:
    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 )
    執行的過程相當于:
    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好像只用于關聯子查詢(其他子查詢當然也可以用,可惜沒意義)。
    由于exists是用loop的方式,所以,循環的次數對于exists影響最大,所以,外表要記錄數少,內表就無所謂了,而in用的是hash join,所以內表如果小,整個查詢的范圍都會很小,如果內表很大,外表如果也很大就很慢了,這時候exists才真正的會快過in的方式。
             下面這段還是抄的
    not in 和not exists
    如果查詢語句使用了not in 那么內外表都進行全表掃描,沒有用到索引;
    而not extsts 的子查詢依然能用到表上的索引。
    所以無論那個表大,用not exists都比not in要快。
              也就是說,in和exists需要具體情況具體分析,not in和not exists就不用分析了,盡量用not exists就好了。


    我的微博 http://t.sina.com.cn/1401900445

    posted on 2009-01-07 15:03 月掛夜中央 閱讀(6272) 評論(2)  編輯  收藏 所屬分類: SQL很強大

    評論

    # re: oracle中in,not in和exists,not exists之間的區別 2009-01-09 10:04 jyojyo

    in 語句翻譯成內連接, 內連接到最后還不是做loop?
    所以有區別嗎?  回復  更多評論   

    # re: oracle中in,not in和exists,not exists之間的區別 2009-01-12 08:30 月掛夜中央

    @jyojyo

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

    嵌套循環和哈希連接的算法還是有不同,在理論上哈希連接要快過排序和nl,當然實際情況比理論上有復雜的多,不過兩者還是有差異的  回復  更多評論   

    主站蜘蛛池模板: 99免费在线观看视频| 国产免费直播在线观看视频| 亚洲第一网站免费视频| 中字幕视频在线永久在线观看免费| 亚洲国产精华液2020| 亚洲中文字幕在线观看| 很黄很色很刺激的视频免费| 成人免费观看男女羞羞视频| 亚洲黄色在线网站| 亚洲人成人无码网www国产| 国产免费女女脚奴视频网| 永久免费无码网站在线观看个| 亚洲精品永久www忘忧草| 国产又黄又爽又刺激的免费网址| 国内精品久久久久影院免费| 亚洲av无码有乱码在线观看| 亚洲春色在线视频| 日韩人妻无码免费视频一区二区三区 | 国产精品国产午夜免费福利看| 精品国产污污免费网站| 色婷婷亚洲一区二区三区| 亚洲国产精品国自产电影| 亚洲成年人啊啊aa在线观看| 国产精品美女午夜爽爽爽免费| 在线免费播放一级毛片| 亚洲国产日韩a在线播放| 亚洲视频小说图片| 精品国产亚洲一区二区三区| 国产女高清在线看免费观看| 18禁止观看免费私人影院| a毛片免费观看完整| 黄色免费在线观看网址| 亚洲午夜精品一区二区麻豆| 久久精品亚洲精品国产色婷| 亚洲狠狠婷婷综合久久久久| 亚洲?v无码国产在丝袜线观看| 精品国产免费观看一区| 中字幕视频在线永久在线观看免费| 免费人成视频在线观看网站| 国产在线观看xxxx免费| 人人鲁免费播放视频人人香蕉|