BLOG main image
전체보기 (77)
PHP (0)
JAVA (2)
ORACLE (5)
DB2 (0)
NETWORK (0)
LINUX (14)
etc... (6)
일상 (50)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2011. 11. 13. 21:25

Oracle에서 EXISTS사용 시 조건에 맞는 ROW만 출력 해준다.

IN은 실제로 존재하는 데이터를 모두 확인하지만

EXISTS 해당 ROW가 존재하는지만 체크하고 실행되지 않는다.

따라서 IN에 비하여 쿼리성능이 좋다.



SELECT     
    A.OPER_CD AS OPER_CD
    ,A.REST_CD AS REST_CD
    ,TO_CHAR(TO_DATE('20111113','YYYYMMDD')+1,'YYYYMMDD') AS DEAL_DAY
    ,A.SC_DEAL_CD    AS SC_DEAL_CD  
    ,A.SC_GB         AS SC_GB      
  FROM REST_MST  A 
  ,  SCDELL_MST  B 
  WHERE A.REST_CD  = 'G_10'
  AND  A.OPER_CD  = 'AS0000'
  AND  A.REST_CD  = B.REST_CD
  AND  A.SC_DEAL_CD = B.SC_DEAL_CD
  AND  A.SC_GB   = B.SC_GB
  AND   A.DEAL_DAY = '20111113'
  AND   B.USE_GB  = '1'
  AND NOT EXISTS (SELECT 1
               FROM REST_MST  B
            WHERE B.OPER_CD = A.OPER_CD
            AND B.REST_CD = A.REST_CD
            AND B.SC_GB = A.SC_GB
            and B.SC_DEAL_CD = A.SC_DEAL_CD
            AND B.DEAL_DAY = TO_CHAR(TO_DATE('20111113','YYYYMMDD')+1,'YYYYMMDD')