2011-05-09 66 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

您可能會嘗試在開始時刪除任何索引,然後在導入所有記錄後將其添加回來。如果您先清空表格或只追加新記錄,結果會有所不同。

相關問題