在我的WinForms应用程序中,我将大量数据从二进制文件加载到SQLite DB中。我在DB上查找以确定是否要添加每个新数据,例如
If LookUpResult Then
AddNewData
Else
DiscardNewData
End If
这很慢。 INSERT似乎需要很长时间。我应该使用DataTable或DataSet类将数据加载到RAM,然后写入SQLite DB作为后台任务吗?或者从DataTable对象一次插入多行会花费更少?
我之前将所有数据加载到自定义类中,但速度很快但很可能会达到内存限制,因此转移到数据库。我原本以为SQLite会将INSERT缓存到RAM中,但似乎并非如此。
感谢您的任何建议。
答案 0 :(得分:1)
为确保崩溃一致性,在每次事务结束时,已更改的数据将与磁盘同步。 如果不使用显式事务,则每个命令都将获得自己的自动事务,这意味着您将获得每个命令的同步开销。
对所有插入使用一个事务。 (只要您通过相同的数据库连接,您自己的更改将可见。)