하나의 행을 여러행으로 분리 해서 처리 하고자 합니다.
SELECT * FROM A;
구분키 금액1 금액2 금액3 금액4 금액5
---------------------------------------
111 1100 1200 1300 1400 1400
.
.
.
이런 형태의 자료를
SELECT * FROM B;
구분키 금액구분 금액
------------------------
111 01 1100
111 02 1200
111 03 1300
111 04 1400
111 05 1500
이런 형태로 변경 할려고 합니다.
일반적으로 UNION을 사용한다면
INSERT INTO B
SELECT 구분키, '01', 금액1 FROM A
UNION ALL
SELECT 구분키, '02', 금액2 FROM A
UNION ALL
SELECT 구분키, '03', 금액3 FROM A
UNION ALL
SELECT 구분키, '04', 금액4 FROM A
UNION ALL
SELECT 구분키, '05', 금액5 FROM A
;
이런 유형의 SQL문이 되는데 문제는 테이블 A는 대용량 테이블이며 많은 조건이 있습니다.
대략 한번 처리시 200만건 정도의 자료를 처리 해야 합니다.
해서 UNION을 사용 한다면 똑같은 테이블을 같은 조건으로 컬럼 갯수 만큼 SELECT한다는 부담이 있습니다.
실제 테이블의 처리해야할 컬럼 갯수는 30개 정도 됩니다.
UNION 을 사용하지 않고 한번 SELECT하여 여러 행을 한번에 INSERT할 수 있는 방법이 있을까요?
여러 고수님들의조언 바랍니다.
|