【问题标题】:what's the fastest way to fill a table in SQLite?在 SQLite 中填充表的最快方法是什么?
【发布时间】:2011-05-09 09:50:41
【问题描述】:

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

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

我使用 SQLite 和 QSql 作为 API。

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

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

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

【问题讨论】:

    标签: sqlite qtsql


    【解决方案1】:

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

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

    【讨论】:

    • 我不得不使用“COMMIT”而不是“END”,但它起作用了:确实这是一个与事务相关的问题。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      相关资源
      最近更新 更多