我正在编写一个应用程序,它会生成大量数据以存储在数据库中。
数据库架构非常简单:它只是一个只有4列的表,但我必须填充超过30000行。
我正在使用SQLite和QSql作为API。
数据生成非常快(没有睡眠),我正在使用QSqlQuery来插入一行。
但是,似乎需要7到8秒才能存储100行(我正在使用QTime
进行计时)。
我尝试使用QSqlTableModel
,但我注意到没有性能改进,即使每1000行调用QSqlTableModel::submitAll
(QTime
显示1000行的70-80秒)。
有没有办法更快地存储行?使用SQLite填充表格的最快方法是什么?
答案 0 :(得分:1)
你可以尝试看看你是否有transactions set up correctly;它们很昂贵,因为它们必须同步到磁盘才能提交。
另外请记住,SQLite无论如何都要更加优化。
答案 1 :(得分:1)
您可以尝试在开始时删除任何索引,然后在导入所有记录后再添加它们。如果您先排空表格或仅添加新记录,结果会有所不同。