예를 들어 forstream을 사용하여 일반 이진 파일에 쓰는 것과 같은 속도로 MYSQL DB 테이블에 쓰기를 원합니다.일반 파일에 쓰는 것처럼 MYSQL DB에 어떻게 쓸 수 있습니까?
일반적으로 ofstream을 사용하여 파일에 100M 바이트를 쓰는 데 1 초도 걸리지 않습니다.
MYSQL에서 9 초 이상이 100M 바이트를 삽입했습니다. MYISAM 테이블과 여러 행 삽입 문을 사용했습니다. 즉
, 나는 그것이 그래서바이너리 파일 인 것처럼 단지 표를 작성, (등 ... 구문 분석, 검사)가 더하지 않습니다 있도록 MySQL의를 구성 할 수 있나요 어떤 방법으로 그것을 달성 할 수 있습니까?
편집 1 : 삽입 위치를 MAX에 사용되는 코드 스 니펫 여기
됩니다 : 여기
내가 채울하려는 테이블,
create table Frames
(
f1 varchar(8) not null ,
f2 varchar(6) not null ,
f3 varchar(6) not null ,
f4 varchar(2) not null ,
f5 varchar(4),
f6 varchar(16000),
f7 varchar(4) not null
);
편집 2 는 10000으로 정의된다.
for (int c = 0; c < 100; ++c)
{
string query("insert into Frames (f1,f2,f3,f4,f5,f6,f7) values");
for (int i = 1; i <= MAX; ++i)
{
query += "('AAAAAAAA','000001','000002','05','5005','000000000100000000010000000001000000000100','MKJE')";
query += (i==MAX) ? ";" : "," ;
}
if (mysql_query(conn, query.c_str())) {
fprintf(stderr, "%s\n", mysql_error(conn));
return(1);
}
}
감사
인덱스가 있으면 삽입하기 전에 삭제하고 작업이 완료되면 다시 작성하십시오. 인덱스는 삽입, 업데이트, 삭제 작업에 영향을줍니다. – jonju
테이블 설명을 붙여 넣으십시오. – rocks
@jonju : 사실, 테이블에 인덱스가 없지만 여전히 서술이 매우 느립니다 ... –