zoukankan      html  css  js  c++  java
  • Oracle并非所有的IN都要换成EXISTS

    Oracle查询优化中使用EXISTS可以比使用IN更加速度,当然这只能是在只有一个IN 的情况下,一般有多个IN的情况下,不能将所有的IN都换成EXISTS,道理我也不清楚,我只是根据实际情况的出来的结论。

    采用EXISTS+IN的模式:

    SELECT *
      FROM EXP_REPORT_HEADERS ERH
     WHERE EXISTS
     (SELECT 1
              FROM EXP_REPORT_LINES ERL
             WHERE ERL.EXP_REPORT_HEADER_ID = ERH.EXP_REPORT_HEADER_ID
               AND ERL.CREATION_DATE >= TO_DATE('2014-01-01', 'yyyy-mm-dd'))
          /*  AND EXISTS (SELECT 1
           FROM FND_COMPANIES FC
          WHERE FC.SET_OF_BOOKS_ID = 33
            AND ERH.COMPANY_ID = FC.COMPANY_ID)*/
       AND ERH.COMPANY_ID IN (SELECT FC.COMPANY_ID
                                FROM FND_COMPANIES FC
                               WHERE FC.SET_OF_BOOKS_ID = 33)
    

    耗时:0:01

      

    采用EXISTS+EXISTS

    SELECT *
      FROM EXP_REPORT_HEADERS ERH
     WHERE EXISTS
     (SELECT 1
              FROM EXP_REPORT_LINES ERL
             WHERE ERL.EXP_REPORT_HEADER_ID = ERH.EXP_REPORT_HEADER_ID
               AND ERL.CREATION_DATE >= TO_DATE('2014-01-01', 'yyyy-mm-dd'))
            AND EXISTS (SELECT 1
           FROM FND_COMPANIES FC
          WHERE FC.SET_OF_BOOKS_ID = 33
            AND ERH.COMPANY_ID = FC.COMPANY_ID)/*
       AND ERH.COMPANY_ID IN (SELECT FC.COMPANY_ID
                                FROM FND_COMPANIES FC
                               WHERE FC.SET_OF_BOOKS_ID = 33)
    */
    

    耗时:0:11

  • 相关阅读:
    map映射的用法
    相似的字串(hash+二分)
    进制 /字符串 hash
    CF#632 C.Eugene and an array
    2020牛客寒假算法基础集训营6 H-云
    Educational Codeforces Round 80 (Div. 2)
    Codeforces Round #601 (Div. 2)补题
    luogu-单调队列/单调栈专题
    Comet OJ
    Comet OJ
  • 原文地址:https://www.cnblogs.com/tian2fei/p/3808293.html
Copyright © 2011-2022 走看看