Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 여러 레코드를 한 번에 빠르게 삽입하는 방법

대량의 데이터를 테이블에 삽입할 때 레코드마다 별도의 INSERT 문을 실행하면 속도가 크게 느려집니다. 이럴 때는 하나의 INSERT 문에 여러 개의 값 목록을 쉼표로 구분하여 나열하는 다중 행(Multi-row) 삽입 방식을 사용하면 됩니다.

기본 문법

insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N;

각 괄호 () 안에는 하나의 레코드(행)에 해당하는 값들이 들어가고, 괄호 사이는 쉼표로 구분합니다. 이렇게 하면 네트워크 왕복 횟수와 파싱 오버헤드가 줄어들어 삽입 속도가 크게 향상됩니다.

예제 테이블 생성

먼저 실습용 테이블을 만들어 보겠습니다.

mysql> create table DemoTable2007
(
    Amount1 int,
    Amount2 int,
    Amount3 int
);
Query OK, 0 rows affected (1.36 sec)

다중 레코드 삽입

이제 하나의 INSERT 문으로 5개의 레코드를 동시에 삽입해 보겠습니다.

mysql> insert into DemoTable2007 values(450,600,700),(1000,200,3000),
    (800,900,1200),(1300,1500,2000),(40000,50000,6700);
Query OK, 5 rows affected (0.11 sec)
Records: 5  Duplicates: 0  Warnings: 0

실행 결과를 보면 단 한 번의 쿼리 실행(0.11초)만으로 5개의 레코드가 모두 삽입된 것을 확인할 수 있습니다.

삽입 결과 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable2007;

위 쿼리는 아래와 같은 결과를 출력합니다.

+---------+---------+---------+
| Amount1 | Amount2 | Amount3 |
+---------+---------+---------+
|     450 |     600 |     700 |
|    1000 |     200 |    3000 |
|     800 |     900 |    1200 |
|    1300 |    1500 |    2000 |
|   40000 |   50000 |    6700 |
+---------+---------+---------+
5 rows in set (0.00 sec)

정리

여러 레코드를 삽입할 때는 각 행마다 INSERT 문을 실행하는 대신, 하나의 INSERT 문에 여러 값 목록을 나열하는 것이 좋습니다. 이 방식은 데이터베이스와의 통신 횟수를 줄여주므로 대량 데이터 처리 시 성능 면에서 훨씬 유리합니다.