1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      sql中in與exist效率是怎么樣的

      這篇文章將為大家詳細(xì)講解有關(guān)sql中in與exist效率是怎么樣的,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

      成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括會(huì)澤網(wǎng)站建設(shè)、會(huì)澤網(wǎng)站制作、會(huì)澤網(wǎng)頁(yè)制作以及會(huì)澤網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,會(huì)澤網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到會(huì)澤省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

      一、IN 與EXISTS
      1、理解

      IN的執(zhí)行流程
      SELECT * FROM T1 WHERE X IN (SELECT Y FROM T2)
      事實(shí)上可以理解為:
      SELECT * FROM T1, (SELECT DISTINCT Y FROM T2) T2 WHERE T1.X =T2.Y
      從這里可以看出,IN需要先處理T2表,然后再和T1進(jìn)行關(guān)聯(lián)

      EXISTS的執(zhí)行流程

      SELECT *FROM T1 WHEREEXISTS (SELECT
      NULLFROM T2 WHEREY = X)--可以理解為:for xin (select
      * fromt1 ) LOOP    if( exists ( selectnull
      from t2where y =x.x )THEN        OUTPUTTHE RECORD    endifend loop

      從這里看出,EXISXTS會(huì)先查詢T1表,然后再LOOP處理T2表

      2、結(jié)論
      對(duì)于in 和 exists的區(qū)別: 如果子查詢得出的結(jié)果集記錄較少,主查詢中的表較大且又有索引時(shí)應(yīng)該用in,反之如果外層的主查詢記錄較少,子查詢中的表大,又有索引時(shí)使用exists。其實(shí)我們區(qū)分in和exists主要是造成了驅(qū)動(dòng)順序的改變(這是性能變化的關(guān)鍵),如果是exists,那么以外層表為驅(qū)動(dòng)表,先被訪問,如果是IN,那么先執(zhí)行子查詢,所以我們會(huì)以驅(qū)動(dòng)表的快速返回為目標(biāo),那么就會(huì)考慮到索引及結(jié)果集的關(guān)系了。
      綜合以上對(duì)IN/EXISTS的討論,我們可以得出一個(gè)基本通用的結(jié)論:IN適合于外表大而內(nèi)表小的情況;EXISTS適合于外表小而內(nèi)表大的情況。

      二、NOT IN 與NOT EXISTS
      1、理解

      NOT IN的執(zhí)行流程
      SELECT * FROM T1 WHERE X NOT IN (SELECT Y FROM T2)
      事實(shí)上可以理解為:
      SELECT * FROM T1, (SELECT DISTINCT Y FROM T2) T2 WHERE T1.X !=T2.Y

      NOT EXISTS的執(zhí)行流程

      SELECT .. ...  FROMROLLUP R WHERE NOTEXISTS (SELECT'Found'
      FROM
      TITLE TWHERE R.SOURCE_ID = T.TITLE_ID);--可以理解為:for xin (select
      * fromrollup )       loop           if(
      not exists ( that query ) ) then                  OUTPUT           endif;        end;

      注意:NOT EXISTS 與 NOT IN不能完全互相替換,看具體的需求。如果選擇的列可以為空,則不能被替換。具體見:in/exists和notin/not exists語(yǔ)意探討

      2、結(jié)論
      not in 只有當(dāng)子查詢中,select 關(guān)鍵字后的字段有not null約束或者有這種暗示時(shí)用notin,另外如果主查詢中表大,子查詢中的表小但是記錄多,則應(yīng)當(dāng)使用not in,并使用anti hashjoin.如果主查詢表中記錄少,子查詢表中記錄多,并有索引,可以使用not exists,另外not in最好也可以用或者外連接+isnull.一般情況下建議使用not exists

      --比如:SELECT .. ....  FROMROLLUP R WHERE NOTEXISTS (SELECT'Found'
      FROM
      TITLE TWHERE R.SOURCE_ID = T.TITLE_ID);--改成SELECT .. ....  FROMTITLE T, ROLLUP
      R WHERE R.SOURCE_ID =T.TITLE_ID(+)   ANDT.TITLE_ID
      IS
      NULL;--或者SELECT.... ..  FROMROLLUP R WHERE OURCE_IDNOT
      IN
             (SELECTOURCE_ID
      FROM TITLE TWHERE OURCE_ID
      IS
      NOT NULL);

      關(guān)于“sql中in與exist效率是怎么樣的”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


      文章名稱:sql中in與exist效率是怎么樣的
      本文路徑:http://ef60e0e.cn/article/pogehj.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        仙桃市| 嵊州市| 无棣县| 宁波市| 天全县| 什邡市| 凭祥市| 大英县| 景泰县| 平罗县| 延庆县| 双峰县| 金华市| 安达市| 上思县| 同心县| 青阳县| 墨竹工卡县| 广元市| 巨野县| 平阳县| 剑河县| 江华| 宝兴县| 博罗县| 海晏县| 集安市| 靖宇县| 吉安市| 新乡市| 确山县| 饶平县| 万年县| 阳泉市| 得荣县| 新津县| 定结县| 内丘县| 南宫市| 汽车| 汕头市|