Sql VB6更新到表时的访问速度
我知道VB6有点过时,但这就是我继承的应用程序 我必须根据访问表的数组结果进行更新 数组包含一个double和要更新的记录的id 问题是有120000条记录需要更新,但在一次测试中,仅在374条记录上运行它就需要60秒 这是我的更新代码Sql VB6更新到表时的访问速度,sql,vb6,Sql,Vb6,我知道VB6有点过时,但这就是我继承的应用程序 我必须根据访问表的数组结果进行更新 数组包含一个double和要更新的记录的id 问题是有120000条记录需要更新,但在一次测试中,仅在374条记录上运行它就需要60秒 这是我的更新代码 Dim oCon As New ADODB.Connection Dim oRs As New ADODB.Recordset Dim string3 As String oCon.Open "Driver={Microsoft Access Driver (*
Dim oCon As New ADODB.Connection
Dim oRs As New ADODB.Recordset
Dim string3 As String
oCon.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path &"\hhis.mdb;Pwd=/1245;"
oCon.BeginTrans
For i = 0 To maxnumberofrecords - 1
string3 = "UPDATE YourRatings SET yourRatings=" & YourTotalRatingsAll(i) & " Where thisID = " & thisID(i) & ";"
oRs.Open string3, oCon, adOpenStatic, adLockOptimistic
Next i
oCon.CommitTrans
oCon.Close
我根据我读过的其他一些文章添加了“CommitTrans”,但这似乎并没有提高速度
另一个问题是,我将不得不运行另一个查询,将最高(1)列到最低(374)列,并再次更新数据库……尽管我可能会对数组做一些操作,以同时添加该列
这对我来说似乎很慢,尤其是当其他帖子在14秒内提到200000条记录时
我是不是错过了什么?
从文本文件加载会更快吗
提前感谢您的帮助
Mal使用
打开时,您总是要构造一个新的结果集
对象。尝试oCon.execute string3
,它只将SQL发送到数据库,而不会产生结果集开销
确保您在thisID
上有索引
也许您的Access DB位于网络驱动器上。这可能会对性能产生很大影响。在本地尝试。使用打开
您总是构建一个新的结果集
对象。尝试oCon.execute string3
,它只将SQL发送到数据库,而不会产生结果集开销
确保您在thisID
上有索引
也许您的Access DB位于网络驱动器上。这可能会对性能产生很大影响。尝试本地查询。要添加到Wumpz应答,您可能需要尝试直接将查询添加到Access数据库中,并使用参数调用该查询。说得更多
参数远比注入更稳定,更不易被破解。为了添加到Wumpz答案中,您可能需要尝试直接将查询添加到Access数据库中,并使用参数调用它。说得更多
与注入相比,参数更稳定,更不易破解。为什么要使用陈旧的Access桌面ODBC驱动程序而不是Jet 4.0 OLEDB提供程序
为什么要打开记录集进行更新,而不是在连接上调用Execute
是否有任何原因使您无法以独占访问权限打开数据库以执行此操作?锁定开销几乎被消除,而“货物崇拜”技术(如使用BeginTrans/CommitTrans打击)失去了任何意义
在表中的thisID
字段上是否有索引
请尽快转到magic bullet.Net。您的程序会更慢,但我们不必阅读所有抱怨VB6的文章。为什么您要使用陈旧的Access桌面ODBC驱动程序而不是Jet 4.0 OLEDB提供程序
为什么要打开记录集进行更新,而不是在连接上调用Execute
是否有任何原因使您无法以独占访问权限打开数据库以执行此操作?锁定开销几乎被消除,而“货物崇拜”技术(如使用BeginTrans/CommitTrans打击)失去了任何意义
在表中的thisID
字段上是否有索引
请尽快转到magic bullet.Net。您的程序将更慢,但我们不必阅读所有抱怨VB6的文件。这确实有助于缩短几秒钟,但实际完成更新仍需要51秒…希望我可以改进这一点,但感谢您的建议。我将此ID更改为主键,成功了。您一定要小心移动数据库时,尤其是其他应用程序链接到数据库时。数据库被移动通常有很好的原因。这确实有助于缩短几秒钟,但实际完成更新仍需要51秒…希望我可以改进这一点,但感谢你的建议。我将此ID更改为主键,成功了。移动数据库时要小心,特别是如果其他应用程序链接到它。数据库被移动通常有很好的理由。谢谢,我一直在考虑这样做。谢谢,我一直在考虑这样做。