Performance SQLITE使用事务更新速度非常慢,而INSERT很快
我正在使用vb.net,sqlite dll。我有10万条记录的数据库。我需要根据单个条件用新值简单地更新一个字段值。我还需要执行100K更新命令,如下所示(使用事务) 更新表_NAME SET Matnum='yy',其中ordernumber=98739强> 当我运行Update命令时,它花费了太多的时间~15分钟。我尝试检查Insert命令性能,如下所示(使用事务),并添加了100k行插入: “在表中插入名称(Matnum)值('yyy');” 所需时间不到3秒 这是为什么。怎么了? 我的代码如下Performance SQLITE使用事务更新速度非常慢,而INSERT很快,performance,sqlite,Performance,Sqlite,我正在使用vb.net,sqlite dll。我有10万条记录的数据库。我需要根据单个条件用新值简单地更新一个字段值。我还需要执行100K更新命令,如下所示(使用事务) 更新表_NAME SET Matnum='yy',其中ordernumber=98739 当我运行Update命令时,它花费了太多的时间~15分钟。我尝试检查Insert命令性能,如下所示(使用事务),并添加了100k行插入: “在表中插入名称(Matnum)值('yyy');” 所需时间不到3秒 这是为什么。怎么了? 我的代码
Dim Str As String = ""
Dim sCmdTmp As SQLiteCommand = New SQLiteCommand(Str, SQLKonnLITE)
Using trs As SQLiteTransaction = SQLKonnLITE.BeginTransaction()
For x As Integer = 1 To 100000
Str = "UPDATE TABLE_NAME SET Matnum='yy' WHERE ordernumber=98739;"
sCmdTmp.CommandText = Str
sCmdTmp.ExecuteNonQuery()
Next
trs.Commit()
End Using
对不起,我的代码已经包含了它,但是我没有将代码放到这篇文章中。我试着删除Where和添加Where,它们都是一样的。我用正确的代码更新了问题为什么要用相同的值更新同一行100000次?ordernumber上可能没有索引?执行:
CREATE UNIQUE index index\u order\u number on TABLE\u NAME(ordernumber)代码>。如果列不包含唯一值,请删除唯一值。你可以在这里找到更多:工作很好。。。感谢Zach&forpas先生的支持。我已经表明你们两位都支持解决这个问题。再次感谢。。