SQL

오라클 대량 insert시 속도향상 방법이 궁금합니다.

0
한번에 데이터를 대략 3000건 insert시 2.2초가 되는데 좀 더 빠른속도로 insert 하고싶습니다. mybatis로 직접쿼리를 작성하여 돌리고있습니다. 방법이없나요???

한번에 데이터를 대략 3000건 insert시 2.2초가 되는데 좀 더 빠른속도로 insert 하고싶습니다.

mybatis로 직접쿼리를 작성하여 돌리고있습니다.

방법이없나요???

db oracle DML
yous3163 2019-08-05
+
yous3163 님께서 2019-08-05에 SQL에 올린 질문

댓글

1개의 답변

0
먼저 FORALL이 들어간 PL/SQL을 작성하는 방법이 있습니다. FORALL을 사용하면 하나씩 insert하는 것보다 속도가 빨라집니다. 아래는 FORALL을 사용하는 예입니다. SQL> DECLARE 2 TYPE mozi_ins IS TABLE OF MOZI%ROWTYPE INDEX..

먼저 FORALL이 들어간 PL/SQL을 작성하는 방법이 있습니다.

FORALL을 사용하면 하나씩 insert하는 것보다 속도가 빨라집니다.

아래는 FORALL을 사용하는 예입니다.

SQL> DECLARE
  2    TYPE mozi_ins IS TABLE OF MOZI%ROWTYPE INDEX BY BINARY_INTEGER;
  3    tistory mozi_ins;
  4  BEGIN
  5    FOR i IN 1 .. 3 LOOP
  6      tistory(i).C1 := i;
  7      tistory(i).C2 := i;
  8    END LOOP;
  9  
 10    FORALL i in 1 .. 3 INSERT INTO MOZI VALUES tistory(i);
 11    COMMIT;
 12  END;
 13  /

PL/SQL procedure successfully completed.

 

또 다른 팁은 insert 하기 전에 테이블의 index를 모두 drop하여 지운 다음 insert 하면 속도가 빨라집니다.

물론 insert를 마치신 후에는 다시 index를 생성해주셔야 합니다.

아마야 2021-01-31
+
사탕 주기
아마야 님께서 2021-01-31에 SQL에 올린 글
보관하기

댓글

조회수 1,108
답글 1
URL