gpt4 book ai didi

mysql - 如何加速 ADODB 连接

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:44 24 4
gpt4 key购买 nike

我正在运行下面的代码以将数据从我的 Access 数据库检索到 Excel。代码执行大约需要 1 分钟。目前大约有 500 条记录,8 列。我可以做些什么来修改我的代码以加快运行速度吗?

Sub sync_Data()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

Dim cn As ADODB.Connection, rs As ADODB.Recordset
Dim mysqlSt As String
Dim rowindex As Long

mysqlSt = "SELECT pbsclients.client, pbsclients.priority, pbsclients.source, pbsclients.lastcontact, pbsclients.result, pbsclients.nextsteps, pbsclients.attempts, pbsclients.notes FROM pbsclients; "

Set cn = New ADODB.Connection
With cn
.ConnectionString = con1
.Open
End With

rowindex = 2
Set rs = New ADODB.Recordset
rs.Open mysqlSt, cn, adOpenDynamic, adLockOptimistic

While Not rs.EOF
Sheet3.Cells(rowindex, 1) = rs!client
Sheet3.Cells(rowindex, 2) = rs!Priority
Sheet3.Cells(rowindex, 3) = rs!Source
Sheet3.Cells(rowindex, 4) = rs!lastcontact
Sheet3.Cells(rowindex, 5) = rs!result
Sheet3.Cells(rowindex, 6) = rs!nextsteps
Sheet3.Cells(rowindex, 7) = rs!attempts
Sheet3.Cells(rowindex, 8) = rs!Notes

rowindex = rowindex + 1
rs.MoveNext
Wend

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Exit Sub

Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub

最佳答案

这是我的代码的工作版本,运行和检索大约需要 2 秒,而我上面的代码需要 45 秒 - 1 分钟。

Sub sync_Data()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

Dim cn As ADODB.Connection, rs As ADODB.Recordset
Dim mysqlSt As String
Dim rowindex As Long


mysqlSt = "SELECT pbsclients.client, pbsclients.priority, pbsclients.source, pbsclients.lastcontact, pbsclients.result, pbsclients.nextsteps, pbsclients.attempts, pbsclients.notes FROM pbsclients WHERE Id <> 0 AND pbsclients.branch = '" & Sheet3.Range("Z1") & "'"

Set cn = New ADODB.Connection

With cn
.ConnectionString = con1
.Open
End With
rowindex = 2
Set rs = New ADODB.Recordset
rs.Open mysqlSt, cn, adOpenDynamic, adLockOptimistic

Do While Not rs.EOF

Sheet3.Range("A2").CopyFromRecordset rs

Loop

rs.Close
cn.Close
Set rs = Nothing

Set cn = Nothing
Exit Sub
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub

关于mysql - 如何加速 ADODB 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55406495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com