1

在我的 WinForms 应用程序中,我将大量数据从二进制文件加载到 SQLite DB 中。我在数据库上进行查找以确定是否要添加每条新数据,例如

If LookUpResult Then
   AddNewData
Else
   DiscardNewData
End If

这很慢。插入似乎需要很长时间。我应该使用 DataTable 或 DataSet 类将数据加载到 RAM,然后作为后台任务写入 SQLite DB 吗?或者一次从 DataTable 对象中插入多行成本会更低吗?

我之前将所有数据加载到自定义类中,速度很快,但可能会达到内存限制,因此转移到数据库。我原以为 SQLite 无论如何都会将 INSERT 缓存到 RAM 中,但事实并非如此。

感谢您的任何建议。

4

1 回答 1

1

为确保崩溃一致性,更改的数据在每个事务结束时与磁盘同步。如果不使用显式事务,则每个命令都会获得自己的自动事务,这意味着您会获得每个命令的同步开销。

对所有插入使用一个事务。(只要您通过相同的数据库连接,您自己的更改就会可见。)

于 2012-11-26T08:54:57.550 回答