2012-04-19 5 views
2

나는 테이블과 같이 있습니다기본 키 순서로 행을 삽입하는 것이 더 빠릅니까?

create table stream_last 
(
     symbol_id  integer, 
     high   decimal(8,2), 
     low    decimal(8,2), 
     last   decimal(8,2), 
     volume   integer, 
     last_updated datetime, 
     INDEX USING BTREE(symbol_id) 
) ENGINE=MEMORY; 

나는 약 4,000 삽입 (C 프로그램 스트림을 읽고 symbol_id에 집계에 의해 비난) 5 초마다 할 필요가있다. 그러나, 먼저 데이터를 정렬하고 ascending symbol_id에 의해 순서대로 삽입 할 수 있습니다. 이 대량 삽입물을 더 빠르게 만들까요?

2 차 질문은 BTREE가 인덱스에 가장 적합한 옵션입니까? 문서에서, 나는 ...

답변

3

당신이 제시 한 최적화와 상당한 차이를 얻을 수 있지만, 생각하지 마십시오 충고 해시를 사용하지만, 가장 좋은 것입니다 확실하지 않았다 수도 여기에 나열된

http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html

확실히 당신은 더 나은 귀하의 요구를 이해하는 데 도움이 될 수 있습니다.

이 인용 의미

테이블의 크기는 로그 N, 가정 B 트리 인덱스에 의해 인덱스 삽입을 감속을 가질 수있다.

같은 시간에 같은 클라이언트에서 많은 행을 삽입하는 경우는, 여러 값으로 사용 INSERT 문은 한 번에 여러 행을 삽입 나열

당신은 삽입 속도를 높이기 위해 다음과 같은 방법을 사용할 수 있습니다 . 별도의 단일 행 INSERT 문을 사용하는 것보다 훨씬 빠릅니다 ( 의 경우 여러 번 더 빠름). 비어 있지 않은 테이블에 데이터를 추가하는 경우 bulk_insert_buffer_size 변수를 조정하여 더 빨리 데이터를 삽입 할 수 있습니다. 섹션 5.1.3, "서버 시스템 변수"를 참조하십시오.

+1

wow no kidding. 정보 thx. 나는 이것을 알지 못했다 : INSERT INTO tbl_name (a, b, c) VALUES (1,2,3), (4,5,6), (7,8,9); –

관련 문제