MYSQL 다중 insert문 성능 질문 0 1 5,689

by 끙차끙차 [2016.04.20 16:29:50]


MYSQL에서는 맨아래 A번 처럼 한번에 다중 INSERT가 가능한데요  

저렇게 다중으로 하는경우와 소스단에서 for문으로 단일 insert문을 돌리는경우

어느게 더 성능상에 더 빠른가요? 

또 ORACLE로 포팅을 해야하는데요 . 이걸바꾸면 INSERT ALL을 통해서 변경이 가능한걸로 알고있는데

이또한 INSERT ALL을 쓰는게 나을까요 아니면 for문으로 단일 INSERT를 하는게 맞을까요?

 

검색해보니 INSERT ALL은 동일테이블이 아닌 다른테이블을 한꺼번에 insert할떄 쓴다고하는데 

저의 경우에는 동일테이블에 여러 VALUES를 넣을려는게 목적이고 데이터 한번에 insert할 양은

최소 10개 ~ 최대 3만개를 안넘길것같습니다.

질문요약 

1. MYSQL 다중 INSERT문 VS 로직상 FOR문으로 단일 INSERT문 호출

2. ORACLE INSERT ALL  VS 로직상 FOR문으로 단일 INSERT문 호출

어느게 속도,성능상에 좋은건가요??

 

 

 

A. MYSQL 다중 INSERT

INSERT INTO
 `test`
(
 `test_id`,
 `test_data`,
 `mod_date`
)
VALUES
(
 'T1',
 'test data1',
 NOW()
),
(
 'T2',
 'test data2',
 NOW()
);
by 마농 [2016.04.20 16:49:35]

너무 작은 단위의 작업으로 쪼개서 빈번하게 호출하는 것 보다는
하나로 묶어 한번만 수행하는게 좋구요.
하나로 묶기에는 너무 큰 규모라면?
어느 정도 규모로 묶어 수행 횟수를 줄이는게 좋습니다.


INSERT ALL 은 전혀 다른거라 해당 없는 듯 하구요.


한방 쿼리인 INSERT ~ SELECT 형태가 유사하다고 볼 수 있겠네요.
INSERT INTO test(test_id, test_data, mod_date)
SELECT 'T1', 'test data1', sysdate FROM dual
UNION ALL SELECT 'T2', 'test data2', sysdate FROM dual
;


일정 단위로 묶어 처리하는 Array Processing 기법도 있습니다.
http://www.gurubee.net/article/12607
http://wiki.gurubee.net/pages/viewpage.action?pageId=26744690

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입