1

我正在编写一个应用程序,它产生大量数据以存储在数据库中。

DB 模式非常简单:它是一个只有 4 列的表,但我必须用超过 30000 行来填充它。

我使用 SQLite 和 QSql 作为 API。

数据生成速度非常快(没有睡眠),我正在使用 QSqlQuery 一次插入一行。然而,存储 100 行似乎需要 7-8 秒(我QTime用于计时)。

我尝试使用QSqlTableModel,但没有发现性能提升,甚至QSqlTableModel::submitAll每 1000 行调用一次(QTime显示 1000 行需要 70-80 秒)。

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

4

2 回答 2

1

您可以尝试查看是否正确设置了交易;它们很昂贵,因为它们必须同步到磁盘才能提交。

还要记住,无论如何,SQLite 都针对阅读进行了更多优化。

于 2011-05-09T09:59:22.627 回答
1

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

于 2014-06-19T19:35:21.430 回答