분석함수의 활용 (셀프조인의 해결)
(Self-Join이면서 아우터 조인 형태)
(LEAD() OVER() 함수 적용) -- 직후 데이터
LAG() OVER() -- 직전 데이터
SELECT CODE, SEQ_NO, PRICE, BEGIN_YMD,
LAG(BEGIN_YMD,1,'99991231')
OVER(PARTITION BY CODE
ORDER BY CODE ASC,SEQ_NO ASC) END_YMD
FROM DANGA_HIST;
사용자가 요구하는 리포트의 특성 또는 테이블의 설계적인 특성
으로 인한 Self-Join 상의 과부하적인 부분을 해소할 수 있는
방안이 있습니다. 특히 이번 예제에서는 Self-Outer Join에 대
해 사용할 수 있는 분석용 함수를 알아 보고자 합니다.
- 인덱스정보
DANGA_HIST_PK : CODE + SEQ_NO
으로 인한 Self-Join 상의 과부하적인 부분을 해소할 수 있는
방안이 있습니다. 특히 이번 예제에서는 Self-Outer Join에 대
해 사용할 수 있는 분석용 함수를 알아 보고자 합니다.
- 인덱스정보
DANGA_HIST_PK : CODE + SEQ_NO
(Self-Join이면서 아우터 조인 형태)
SELECT A.CODE, A.SEQ_NO, A.PRICE,
A.BEGIN_YMD, NVL(B.BEGIN_YMD,'99991231') END_YMD
FROM DANGA_HIST A, DANGA_HIST B
WHERE A.CODE = B.CODE(+)
AND A.SEQ_NO + 1 = B.SEQ_NO(+);
A.BEGIN_YMD, NVL(B.BEGIN_YMD,'99991231') END_YMD
FROM DANGA_HIST A, DANGA_HIST B
WHERE A.CODE = B.CODE(+)
AND A.SEQ_NO + 1 = B.SEQ_NO(+);
(LEAD() OVER() 함수 적용) -- 직후 데이터
SELECT CODE, SEQ_NO, PRICE, BEGIN_YMD,
LEAD(BEGIN_YMD,1,'99991231')
OVER(PARTITION BY CODE
ORDER BY CODE ASC,SEQ_NO ASC) END_YMD
FROM DANGA_HIST;
LEAD(BEGIN_YMD,1,'99991231')
OVER(PARTITION BY CODE
ORDER BY CODE ASC,SEQ_NO ASC) END_YMD
FROM DANGA_HIST;
SELECT CODE, SEQ_NO, PRICE, BEGIN_YMD,
LEAD(BEGIN_YMD)
OVER(PARTITION BY CODE
ORDER BY CODE ASC,SEQ_NO ASC) END_YMD
FROM DANGA_HIST;
LEAD(BEGIN_YMD)
OVER(PARTITION BY CODE
ORDER BY CODE ASC,SEQ_NO ASC) END_YMD
FROM DANGA_HIST;
LAG() OVER() -- 직전 데이터
SELECT CODE, SEQ_NO, PRICE, BEGIN_YMD,
LAG(BEGIN_YMD,1,'99991231')
OVER(PARTITION BY CODE
ORDER BY CODE ASC,SEQ_NO ASC) END_YMD
FROM DANGA_HIST;
SELECT CODE, SEQ_NO, PRICE, BEGIN_YMD,
LAG(BEGIN_YMD)
OVER(PARTITION BY CODE
ORDER BY CODE ASC,SEQ_NO ASC) END_YMD
FROM DANGA_HIST;
LAG(BEGIN_YMD)
OVER(PARTITION BY CODE
ORDER BY CODE ASC,SEQ_NO ASC) END_YMD
FROM DANGA_HIST;
'04번. IT 힌트얻기 > ▶ DB Tuning' 카테고리의 다른 글
[Tuning] perfect_study_03 (0) | 2011.10.13 |
---|---|
[Tuning] perfect_study_02 (0) | 2011.10.12 |
[Tuning] 분석함수의 활용 (셀프조인의 해결) (0) | 2011.10.12 |
[Tuning] Scalar 서브쿼리 활용 (0) | 2011.10.12 |
[Tuning] Nested와 Correlated Sub-query의 동시 사용 (0) | 2011.10.12 |