vb.net - 循环中的sqlite更新需要很长时间
问题描述
我在一个循环中只更新 20 行,但我获得的最佳性能是 20 行大约 2.5 秒。我该怎么做才能使这个简单的更新更快?
这是我试过的:
Dim connectionString As New SQLite.SQLiteConnection("data source=" & Application.StartupPath & "\db.db3; Version=3;")
Dim connection = New SQLite.SQLiteConnection(connectionString)
connection.Open()
Dim com3 As New System.Data.SQLite.SQLiteCommand(connection)
For Each row As DataRow In table.Rows
com3.CommandText = "UPDATE Results SET LastScore=" & row.Item("position") & " WHERE TeamID='" & row.Item("teamid") & "'"
com3.ExecuteNonQuery()
Next
connection.Close()
和
Dim connectionString As New SQLite.SQLiteConnection("data source=" & Application.StartupPath & "\db.db3; Version=3;")
Using con As New SQLiteConnection(connectionString)
con.Open()
Using c As New SQLiteCommand(con)
c.CommandText = "UPDATE Results SET LastScore= @Pos WHERE TeamID = @ID"
For Each row As DataRow In table.Rows
c.Parameters.AddWithValue("@Pos", row.Item("position"))
c.Parameters.AddWithValue("@ID", row.Item("teamid"))
c.ExecuteNonQuery()
Next
End Using
con.Close()
End Using
解决方案
感谢 muffi 的回答,这个问题现在已经解决。添加 BeginTransaction()
Dim connectionString As New SQLite.SQLiteConnection("data source=" & Application.StartupPath & "\db.db3; Version=3;")
Using con As New SQLiteConnection(connectionString)
con.Open()
Using t As SQLiteTransaction = con.BeginTransaction()
Using c As New SQLiteCommand(con)
c.CommandText = "UPDATE Results SET LastScore= @Pos WHERE TeamID = @ID"
For Each row As DataRow In table.Rows
c.Parameters.AddWithValue("@Pos", row.Item("position"))
c.Parameters.AddWithValue("@ID", row.Item("teamid"))
c.ExecuteNonQuery()
Next
End Using
t.Commit()
End Using
con.Close()
End Using
推荐阅读
- python - 如何从 URL 读取图像(urllib.error.HTTPError:HTTP 错误 403:禁止)
- c# - 访问另一个脚本变量,但不能更改游戏内
- reactjs - 开玩笑测试给出错误“无法读取未定义的属性‘createElement’”
- python - Go/Python 异步桥接
- c - 如何解决 C 程序 int main 错误
- opengl - 在相机后面的位置进行广告牌时的伪影
- php - 当数组中有数组时,str_replace 是否完成?
- amazon-web-services - 替换从 VAST 代码返回的多个 HLS VOD 片段
- blogger - 如何检查延迟加载脚本是否适用于 Blogger 帖子中上传的图像?
- django - 在 Django 中验证复杂的关系