我有这个我编写的通用例程,它接受一个sql字符串列表并对数据库执行它们。有什么方法可以让这项工作更快?通常情况下,它一次可能会看到200次插入或删除或更新。有时会有更新,插入和删除的混合。按类型分离查询(即组合插入,然后更新然后删除)是不是一个好主意?
我在ms访问数据库和vb.net 2005上运行它。
Public Function ExecuteNonQuery(ByVal sql As List(Of String), ByVal dbConnection as String) As Integer
If sql Is Nothing OrElse sql.Count = 0 Then Return 0
Dim recordCount As Integer = 0
Using connection As New OleDb.OleDbConnection(dbConnection)
connection.Open()
Dim transaction As OleDb.OleDbTransaction = connection.BeginTransaction()
'Using cmd As New OleDb.OleDbCommand()
Using cmd As OleDb.OleDbCommand = connection.CreateCommand
cmd.Connection = connection
cmd.Transaction = transaction
For Each s As String In sql
If Not String.IsNullOrEmpty(s) Then
cmd.CommandText = s
recordCount += cmd.ExecuteNonQuery()
End If
Next
transaction.Commit()
End Using
End Using
Return recordCount
结束功能
答案 0 :(得分:1)
您可以使用数据适配器一次更新整个数据集。在ADO对象上运行查询比直接运行数据库更快。批处理循环后,更新整个数据集。这可能会更快,但需要在应用程序前面和开销上进行一些额外的编码。