반응형

<상황 >


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
데르벨준

,