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