[SQL 튜닝] JOIN시 OR 사용되어있는 경우 /*+ use_concat */ 으로 튜닝하기 (oracle hint 사용) :: 소림사의 홍반장!
사용 예 )
SELECT  /*+ use_concat */
        EMP010.EMPLOYEE_NUMBER
     ,  SUM(DECODE(EMP010.EMPLOYEE_NUMBER, REP020.EMPLOYEE_NUMBER, 1, 0)) AS CNT
     ,  SUM(DECODE(EMP010.EMPLOYEE_NUMBER, REP020.EMPLOYEE_NUMBER2, 1, 0)) AS CNT2
     ,  SUM(DECODE(EMP010.EMPLOYEE_NUMBER, REP020.EMPLOYEE_NUMBER2, 0 , DECODE(REP020.RESPONE_DATE,NULL,0,1)))  AS CNT3
     ,  SUM(DECODE(EMP010.EMPLOYEE_NUMBER, REP020.EMPLOYEE_NUMBER2, 0 , DECODE(REP020.RESPONE_DATE,NULL,1,0)))  AS CNT4
  FROM  TB_S07_020REPT020 REP020
    INNER JOIN TB_S07_020EMPL010 EMP010
            ON EMP010.COMPANY = REP020.COMPANY
           AND EMP010.EMPLOYEE_NUMBER = REP020.EMPLOYEE_NUMBER
            OR EMP010.EMPLOYEE_NUMBER = REP020.EMPLOYEE_NUMBER2
 WHERE
        REP020.COMPANY = '??????'
   AND  REP020.CREATION_TIMESTAMP  > (to_date('2013-04-01'||'_00:00:00','YYYY-MM-DD_HH24:MI:SS'))
   AND  REP020.CREATION_TIMESTAMP  < (to_date('2013-05-05'||'_23:59:59','YYYY-MM-DD_HH24:MI:SS'))
   AND  REP020.COMPANY            = EMP010.COMPANY
   AND  REP020.EMPLOYEE_NUMBER <> REP020.EMPLOYEE_NUMBER2
   AND  REP020.ACTIVE_FLAG = 'Y'
GROUP BY  EMP010.EMPLOYEE_NUMBER;




사용 전 : 11.57 초
사용 후 : 3.34 초







'Dev. 데이터베이스' 카테고리의 다른 글

sql 특정 개수 만큼 데이터 가져오기  (0) 2012.04.06

다른 카테고리의 글 목록

Dev. 데이터베이스 카테고리의 포스트를 톺아봅니다