我正在编写一个应用程序,该应用程序生成大量数据以存储在数据库中。
DB模式非常简单:它是一个只有4列的表,但我必须用超过30000行来填充它。
我使用SQLite和QSql作为API。
数据的生成速度非常快(没有休眠),我使用QSqlQuery每次插入一行。然而,它似乎需要7-8秒来存储100行(我使用QTime来计算时间)。
我尝试使用QSqlTableModel,但我注意到没有任何性能改进,甚至每1000行调用一次QSqlTableModel::submitAll (QTime对1000行显示70-80秒)。
有没有更快的存储行的方法?用SQLite填充表的最快方法是什么?
发布于 2011-05-09 17:59:23
您可以尝试查看是否有transactions set up correctly;它们的开销很大,因为它们必须同步到磁盘才能提交。
还要记住,SQLite无论如何都是针对阅读进行了更多的优化。
发布于 2014-06-20 03:35:21
您可以尝试在开始时删除任何索引,然后在导入所有记录后重新添加它们。当然,如果您先清空表或只是添加新记录,结果会有所不同。
https://stackoverflow.com/questions/5935203
复制相似问题