我正在开发UWP应用程序。
我有一个数据库,应该用大约20,000条记录进行初始化。定义如下的记录:
private static readonly ObservableCollection<TickRecord> TickRecords = new ObservableCollection<TickRecord>();
我试图一次插入一条记录,如下所示:
private void CreateFakeTickRecords()
{
if ( Database.Database.CountTickRecords() > 0 )
{
return;
}
foreach ( var tickRecord in TickRecords )
{
Database.Database.AddOrUpdateTickRecord( tickRecord );
}
}
和
public static void AddOrUpdateTickRecord( TickRecord tickRecord )
{
// Create a new connection
using ( var db = new SQLiteConnection( new SQLitePlatformWinRT(), DbPath ) )
{
if ( tickRecord.Id == 0 )
{
// New
db.Insert( tickRecord );
}
else
{
// Update
db.Update( tickRecord );
}
}
}
这段代码运行得很好,但是太慢了。
我想修改它,这样我就可以进行“大容量插入”。
我该怎么做?
THX
3条答案
按热度按时间piah890a1#
尝试使用InsertAll和UpdateAll函数。希望这只打开数据库表一次,然后一次插入/更新所有内容。您需要提前确定要插入/更新哪些对象,但这应该会真正加快速度。
deyfvvtc2#
您应该在单个SQLLITE事务中插入所有20,000条记录。
大概是这样的:
lzfw57am3#
我对Bibek Answer进行了一些修改,使其与UWP匹配: