2011-05-09 71 views
1

我正在写一个应用程序,它产生大量的数据存储在数据库中。在SQLite中填充表格的最快方式是什么?

数据库架构非常简单:它只有一个只有4列的表格,但我必须填写超过30000行。

我使用SQLite和QSql作为API。

数据生成速度非常快(不眠),我使用QSqlQuery在时间插入一行。 但是,它似乎需要7-8秒来存储100行(我使用QTime进行计时)。

我试过使用QSqlTableModel,但我注意到没有性能改进,甚至每1000行调用QSqlTableModel::submitAllQTime显示1000行1000-7080秒)。

有什么办法可以更快地存储行?使用SQLite填充表格的最快方法是什么?

回答

1

你可以试着看看你是否有transactions set up correctly;它们很昂贵,因为它们必须同步到磁盘才能提交。

另外请记住,无论如何SQLite是更严格优化阅读。

+0

我不得不使用“COMMIT”而不是“END”,但它工作正常:事实上这是一个交易相关的问题。 – Emiliano 2011-05-09 10:46:07

1

您可能会尝试在开始时删除任何索引,然后在导入所有记录后将其添加回来。如果您先清空表格或只追加新记录,结果会有所不同。

相关问题