Sql VB6更新到表时的访问速度

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 (*

我知道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 (*.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更改为主键,成功了。移动数据库时要小心,特别是如果其他应用程序链接到它。数据库被移动通常有很好的理由。谢谢,我一直在考虑这样做。谢谢,我一直在考虑这样做。