마농님 여러모로 많은 도움을 받았는데... 인사도 변변치 못했네요.
이자리를 빌어 다시 한번 감사드립니다.
SELECT CEIL(COUNT(*)/1000)
FROM PROJ_TAG A,
(SELECT CT_NO, TG_NO,SE_CD
FROM PROJ_TAG_ITR
WHERE DECODE(CN_NO,'IC',SE_CD,'AT') = 'AT'
GROUP BY CT_NO, TG_NO,SE_CD) C
WHERE 1=1
AND A.CT_NO = C.CT_NO
AND A.TG_NO = C.TG_NO
AND A.TRNS_YN = 'N'
AND ROWNUM <= 1000
ID PID Operation Name Rows Bytes Cost CPU Cost IO Cost
0 SELECT STATEMENT 1 69 7694 938M 7641
1 0 SORT AGGREGATE 1 69
2 1 COUNT STOPKEY
3 2 NESTED LOOPS 17954 1209K 7694 938M 7641
4 3 NESTED LOOPS 17954 929K 7692 933M 7640
5 4 VIEW 17912 384K 3212 894M 3162
6 5 HASH GROUP BY 17912 437K 3212 894M 3162
7 6 INDEX FAST FULL SCAN PROJ_TAG_ITR_PK 17912 437K 3211 865M 3162
8 4 TABLE ACCESS BY INDEX ROWID PROJ_TAG 1 31 1 2173 1
9 8 INDEX UNIQUE SCAN PROJ_TAG_PK 1 1 263 1
A 5만건입니다.(문제가 없습니다.)
문제는 C인데 C는 200만건이 GROUP BY 하면 120만건입니다.
중복되는 데이터를 빼고 COUNT 해야해서 GROUP BY 를 합니다.
여기서 시간을 다 잡아 먹습니다.
두개가 조인을 합니다.
그래서 건수가 1000<= 빠져나오고 1을 다른 곳에 보내 주는 업무인가 봅니다.
이게 2분~3분을 소요 합니다.
A 테이블은 PK(A.CT_NO,A.TG_NO)
C 테이블은 PK(CT_NO, TG_NO, SE_CD ,GN_SL)
속도 개선 방법이 있을까요?
아무리 생각해도 ~~~ ^^; |