<상황 >
1. 테이블에 키가 없다. - 즉 데이터가 DUPL이 존재한다... ㅡㅡ;;
2. 그렇지만, 다른 테이블에 MERGE성 데이터를 입력해야하는데
무려 두개의 테이블이 또다른 하나의 테이블과 JOIN해야한다.
3. JOIN 되는 테이블은 각기 1500만건, 3000만건의 대량 데이터이다.
4. JOIN은 OUTER JOIN이다 -0-;;; 즉, 소스 테이블 데이터 = 타겟 테이블 데이터 여야한다.
<방안1>
1. FOR 문을 돌리면서 각 테이블과 INSERT-SELECT 하는 방식을 취한다.
장점은 코드가 간결하다.
단점은 SELECT가 건건이 일어나므로 1건 JOIN당 어마무시한 시간이 생긴다.
단점2: 데이터의 정합성을 확인할 수 없다.
단점3: JOIN에 JOIN이 걸리므로 답이 없다...
따라서, 3000건을 돌리는데 30분이 걸리면서 헉헉거린다.
<해결>
1. FOR문을 돌린다.
2. JOIN문은 2개, 1개 JOIN은 JOIN의 JOIN... 따라서 2개 JOIN에서 SELECT로 데이터를
정제한다.
3. 다른 1개 JOIN은 다시 JOIN을 건다.
4. 각 JOIN 마다 데이터가 JOIN 되는지 여부를 확인한다.
5. JOIN 되지 않는 데이터는 따로 정제하여 입력한다.
장점
- row에 대해서 처리하므로 SELECT시 INDEX 덕분에 빠른 속도로 끝난다.
- 조건문들을 섬세하게 하여, 빠르게 끝낸다.
- 위와 같은 조건 덕분에 1건당 3번 JOIN해도 초당 1255.64건을 처리할 수 있게 되었다.
- 150건 입력에 20분정도 걸리게 되었다.
'DB > 오라클' 카테고리의 다른 글
[오라클] 로그 템플릿 (0) | 2015.01.13 |
---|---|
[오라클] 현재 시스템명 확인하기 (0) | 2015.01.12 |
[PL/SQL] 파일 쓰기 (0) | 2015.01.06 |
[오라클] COMMIT 복구 (0) | 2014.12.29 |
[오라클] BASE 64 사용법 (0) | 2014.12.22 |
WRITTEN BY