我在VBA Excel中编写了一个接口和后端,它通过Firebird ODBC驱动程序与Firebird数据库进行交互。我让数据库在本地运行,速度不是问题。我最近将它移植到服务器上,我通过VPN访问它。问题是它很慢。
最初我的代码效率不高所以我确实简化了它。此查询返回1600行,共6行。总运行时间为5秒。 查询和后续粘贴到电子表格中是否需要这么长时间?
mytimer = Timer
Dim conn2 As ADODB.Connection
Dim box As Variant
Set rst2 = New ADODB.Recordset
Set conn2 = New ADODB.Connection
conn2.Open "SOSA"
sql_string = "SELECT * FROM MACHINES"
rst2.Open sql_string, conn2, adOpenDynamic, adLockOptimistic
box = rst2.GetRows
box = Application.Transpose(box)
Dim NumRows As Long
Dim NumCols As Long
NumRows = UBound(box, 1) - LBound(box, 1) + 1
NumCols = UBound(box, 2) - LBound(box, 2) + 1
Range("A2").Resize(NumRows, NumCols).value = box
conn2.Close
MsgBox ((Timer - mytimer))
一个附带问题,我还有一些代码将工作表和INSERTS中的所有单元格都放到一个表中,然后遍历每一行并生成一个SQL插入,然后执行它,然后执行下一行。不用说这很痛苦。还有更好的方法吗?