카테시안 곱 최적화 방법 문의 드립니다. 0 1 3,043

by 오라클홀릭 [2012.04.20 13:37:25]


MAST_TABLE은 대략 10만건입니다.
카테시안 곱으로  10만건 X 1000일  = 1억건을 만듭니다.
어떻게하면 성능을 향상시킬 수 있는지 궁금합니다.

 SELECT A,
B,
C, -- 마지막변경일자
D, -- 마지막변경시간
E, -- 마지막등록시간
ROW_NUMBER() OVER(PARTITION BY A, B, C ORDER BY A, B, C DESC, D DESC, E DESC) RN
    FROM (SELECT /*+ parallel(t, 8) */
   A,
   B,
   C,
   D,
   E,
   CASE
WHEN C = LEAD(C, 1, '99991231')
  OVER(PARTITION BY A, B  ORDER BY A, B, C, D, E) THEN
  C
ELSE
  TO_CHAR(TO_DATE(LEAD(C, 1, '99991231') OVER(PARTITION BY A,   B
ORDER BY
A,
   B,
   C,
   D,
   E)) - 1,
  'YYYYMMDD')
   END END_DATE
    FROM MAST_TABLE) T1,
(SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20100101', 'YYYYMMDD'), 0) +
ROWNUM - 1,
'YYYYMMDD') AS DATE_LIST
    FROM DUAL T
  CONNECT BY LEVEL <= SYSDATE - TO_DATE('20100101', 'YYYYMMDD') + 1) T2
   WHERE T2.DATE_LIST BETWEEN T1.C AND T1.END_DATE
;

by 마농 [2012.04.20 15:40:43]

행복제 관련 문제네요.
오라클 노하우/팁 에 관련 사항을 등록해 놨으니 참고해 보세요.
http://www.gurubee.net/article/55635
multiset을 이용한 방법이 조금 빠르다고는 하는데...글쎄요.
모든방법을 다 적용해 보시고 수행시간 직접 비교해 보세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입