MS Access有时会快速运行查询,其他时候会慢速运行

时间:2014-03-19 20:38:11

标签: sql excel vba ms-access

我一直在构建一个数据库应用程序(Excel中的前端,Access中的后端),它存储由我的组中的建模者(包括我)建立的财务模型的现金流。数据库最终将会非常庞大​​(1M +记录不会让我感到惊讶),但我预先填充了大约2,500个现金流,这些现金流与~75个交易(和~50个客户)相关联。

因为我的公司有两个子组,所以我实际创建了两个独立的后端,由于不同的请求功能(不幸的是)现在已经分支。但是,这样做让我有机会比较在各种报告中显示的永久表格中构建“临时”表(或存储查询)的运行时间。这些查询涉及一系列连接。在其他条件相同的情况下,一个数据库大约需要1秒钟,另一个数据库大约需要10秒,前者也在10秒前运行,但我最后对前者的表格结构进行了一些修改,以便在我更新后者之后使其与后者相符。负载时间的减少让我很困惑,因为除了在这里和那里添加几个字段之外我什么也没做。

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

有没有人想过发生了什么事?我不希望现在速度较慢的数据库在100,000条记录中变得无法使用,但看起来可能就是这种情况。与此同时,速度更快的应该是好的。我正在推动我们使用mySQL或SQL Server,但与此同时,这件事情必须承担负担。

由于

1 个答案:

答案 0 :(得分:0)

以下是永远需要进行的两个查询之一:

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都有几个非独特的CashFlow,它们会更新"它。我想为每个UniqueCashflow采用最新的非唯一CashFlow。有没有办法加快这个查询?再次感谢!

相关问题