2013-09-04 6 views
3

삽입 레코드를 365 개 삽입하려고합니다. 어떤 것이 더 좋을지 알고 싶습니다.여러 삽입 쿼리 실행

1) 1000 인서트를 삽입하면 내가 두 번째 빠르게 수행 않습니다 싶은 것이 도움이 될 것입니다

insert into table name ('field1', 'field2') values (value,value),(value,value),(value,value),(value,value) 

처럼 삽입)

2) 모든 레코드 (하나 하나를 쿼리합니다. 에 보낼 수있는 시간

+1

조치. 법안. 법안. –

+0

이것은 실제로 좋은 질문입니다. 필자의 첫 번째 본능은 365 개의 개별 insert 문을 생성하는 스크립트를 작성하는 것이지만 실제로는 하나의 명령문을 생성하는 것이 더 빠를 수도 있습니다. 대답 할 수는 없지만 테스트 해보고 결과를 알려주시겠습니까? – gr3co

+1

좋은 질문이 있습니까? 분명히 할 일이 더 많습니까? –

답변

4

MySQL의 INSERT plan에 따르면 우리는 다음과 같은 한 문제 : 그것은 한 번만 Connecting, Sending query to server, Parsing query, Closing 오버 헤드를 생산하기 때문에이 때문에

- Connecting 
- Sending query to server 
- Parsing query 
- Inserting row (1 × size of row) 
- Inserting indexes: (1 × number of indexes) 
- Closing 

가 여러 삽입 훨씬 더 빠릅니다. 그리고이 너무 설명서에 표시됩니다 :

  • 이 여러 값으로 INSERT 문을 사용하여, 같은 시간에 같은 클라이언트에서 많은 행을 삽입하는 경우 나열 한 번에 여러 행을 삽입 할 수 있습니다. 별도의 단일 행 INSERT 문을 사용하는 것보다 훨씬 빠릅니다 (어떤 경우에는 번이 더 빠름). 비어 있지 않은 테이블에 데이터를 추가하는 경우 bulk_insert_buffer_size 변수를 조정하여 데이터 삽입을 더 빨리 수행 할 수도 있습니다 ( ). Section 5.1.4, “Server System Variables”을 참조하십시오.
0

배치를 작성하고 (각 레코드는 개별적으로 삽입되어있는 경우) 데이터베이스가 모든 INSERT 문에 대해 충돌되지 않으므로 데이터가 더 좋을 것 삽입.