有时MS Access运行速度很快,其他时间很慢

我一直在构build一个数据库应用程序(Excel中的前端,Access中的后端),它存储了由我的团队中的build模者(包括我)构build的财务模型的现金stream量。 数据库最终会相当大(1M +logging不会让我感到意外),但是我已经用大约75个交易(约50个客户端)的约2500个现金stream预填充它。

因为在我的公司有两个子组,所以实际上我创build了两个单独的后端,由于不同的请求function(不幸),现在正在分支。 但是,这样做让我有机会比较在各种报表中显示的永久表格的“临时”表(或存储的查询)的运行时间。 这些查询涉及一系列连接。 其他所有相同的情况下,一个数据库需要大约1秒钟,另一个大约10秒,尽pipe类似的logging数量。 前者也是在10秒前运转,但最后我对前者的桌子结构作了一些改变,在更新了后者的基础上使其与后者相符合。 加载时间的减less令我感到困惑,因为除了在这里和那里添加几个字段,我什么也没有做。

从Excel中的VBA中调用临时表查询,但只是为了确保它不是Excel / DAO中的某些东西,我从Access中的VBA运行相同的查询并获得相似的加载时间。

有没有人有什么想法是怎么回事? 我不希望现在较慢的数据库在100,000条logging中无法使用,但看起来可能是这样。 更快的那个,同时应该没问题。 我正在努力让我们在MySQL或SQL Server上,但同时这件事情将不得不承担的负担。

谢谢

这是永远持续的两个疑问之一:

sqlCreateGreatestNPerGroupTable = "INSERT INTO zGreatestNPerGroupAlt(UniqueCashFlowID, CashFlowID, DealID, CashFlowType, CashFlowValue, AltOrRef) " & _ "SELECT u.UniqueCashFlowID, z.CashFlowID, u.DealID, u.CashFlowType, z.CashFlowValue, z.AltOrRef " & _ "FROM UniqueCashFlows as u LEFT JOIN zCashFlowsWithTimes as z ON u.UniqueCashFlowID = z.UniqueCashFlowID " & _ "WHERE (z.CashFlowID) " & _ "In(SELECT Top 1 z2.CashFlowID FROM zCashFlowsWithTimes as z2 " & _ "WHERE z2.UniqueCashFlowID = u.UniqueCashFlowID " & _ "AND z2.AltOrRef = 'Alt' " & _ "ORDER BY z2.DealUpdateTime DESC);" 

简而言之,每个UniqueCashFlow都有几个非唯一的CashFlows“更新”它。 我想为每个UniqueCashflow采取最新的非唯一CashFlow。 有没有办法加快这个查询? 再次感谢!