2011-05-09 4 views
1

데이터베이스에 저장할 많은 양의 데이터를 생성하는 응용 프로그램을 작성하고 있습니다.SQLite에서 테이블을 채우는 가장 빠른 방법은 무엇입니까?

DB 스키마는 매우 간단합니다. 4 열만있는 테이블이지만 30000 개가 넘는 행으로 채워야합니다.

API로 SQLite와 QSql을 사용하고 있습니다.

데이터가 매우 빠르게 생성되고 (절전 모드가 아님) QSqlQuery를 사용하여 시간에 행을 삽입합니다. 그러나 100 행을 저장하는 데 7-8 초가 걸리는 것으로 보입니다 (시간 계산에는 QTime을 사용하고 있습니다).

QSqlTableModel을 사용해 보았지만 아무런 성능 향상도 보이지 않았고 심지어 1000 행 (QTime은 1000 행의 경우 70-80 초를 나타냄)을 QSqlTableModel::submitAll이라고 부릅니다.

행을 더 빨리 저장할 수있는 방법이 있습니까? SQLite로 테이블을 채우는 가장 빠른 방법은 무엇입니까?

답변

1

당신은 transactions set up correctly을 가지고 있는지 볼 수 있습니다. 커밋을 위해 디스크에 동기화해야하기 때문에 비용이 많이 듭니다.

또한 SQLite는 더 읽기에 최적화되어 있습니다.

+0

"끝"대신 "커밋"을 사용해야했지만 제대로 작동했습니다. 트랜잭션 관련 문제였습니다. – Emiliano

1

처음에는 색인을 삭제 한 다음 모든 레코드를 가져온 후에 색인을 다시 추가해보십시오. 테이블을 비우거나 새 레코드를 추가하는 경우 결과가 달라집니다.

관련 문제