【发布时间】:2017-12-05 16:58:45
【问题描述】:
我有一个 Access 数据库,用于计算大量人员一周中每一天的绩效分数。
由于数据集的大小,该过程运行非常缓慢。作为加快这一速度的一种潜在方法,我正在考虑一个过程,该过程将有 5 个独立的数据库,每个数据库计算一天的分数。
我编写了下面的 VBA 代码,它只打开了所有这些 DB(一旦每个 DB 打开,它就有自己的 autoExec 宏来启动它自己的过程)。
Sub DBloop()
Dim dbArr As Variant
Dim i As Integer
dbArr = Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
For i = 0 To UBound(dbArr)
openDBs CStr(dbArr(i))
Next
End Sub
Sub openDBs(dbname As String)
Dim acc As Access.Application
Dim DBpath As String
Dim strDbName As String
DBpath = "H:\Performance Test\"
strDbName = DBpath & dbname & ".accdb"
Set acc = New Access.Application
acc.Visible = True
acc.OpenCurrentDatabase strDbName, False
End Sub
不幸的是,当每个 DB 打开时,初始过程正在等待该 DB 的 autoExec 宏完成,然后再打开下一个。有谁知道这是否有解决方法?
【问题讨论】:
-
您是否打算实际拆分数据?这可能会带来比帮助更多的麻烦。
-
我也计划好了。目前,每个人每天都有一个单独的分数。这些分数实际上是相互独立的,因此我没有预见到将其拆分为单独的程序有任何问题。是否存在我忽略的潜在问题?
-
任何组合所有数据的查询都会变得更加困难。 -- 可能值得在计算上寻求性能帮助,也许可以大大加快速度。
-
可能是有史以来最糟糕的数据库设计!?
-
你为什么这么说?