【发布时间】:2017-03-10 05:44:59
【问题描述】:
我有一个 Access2003 数据库,其中有一个从 SQL Server 数据库链接的表。我有这个更新该 SQL Server 表中的列的 Access vba。每个月清空表并导入新的记录集,记录数量从 300,000 到 每月450,000。
此 Access vba 代码运行但需要 5 个多小时。我需要对此做点什么,有人对如何加快速度有任何想法吗?我的一个想法是将其转换为 SQL Server 上的存储过程,但我不知道如何编写它,因此不胜感激。
谢谢
嘘。
VBA 代码:
' update the ID field in the import table
Dim intCounter As Double
Set MyRec = MyDB.OpenRecordset("tblMarsImport", dbOpenDynaset, dbSeeChanges)
MyRec.MoveFirst
intCounter = Format(Date, "yyyymmdd") & "000001"
Do While Not MyRec.EOF
MyRec.Edit
MyRec!MarsID = CStr(intCounter)
MyRec.Update
MyRec.MoveNext
intCounter = intCounter + 1
Loop
MyRec.Close
【问题讨论】:
-
即使坚持使用 Access,您也可以加快速度,将代码从 DAO 更改为 ADODB,然后使用 Transaction 只执行最少时间的写入操作,300K+ 太高了,所以每 65K 执行一次 Commit。
-
我怀疑类似 `Update
set
= + ROW_NUMBER OVER(ORDER BY )' see MSDN for Row_Number。但是你需要一些格式化代码。 将数据导入表中,然后添加idcolumnalter table [yourtable] add ID int identity (1,1)这样会快很多。
标签: sql-server vba