【发布时间】:2017-11-08 15:42:25
【问题描述】:
我在 Microsoft Access 中遇到问题,我的查询计算速度非常慢(需要数小时和数小时)。此查询正在读取一个包含 150,000 条记录的表,每条记录属于 4,000 个唯一组之一(称为 API_10)。
查询的目标是计算运行累计生产值(由 API_10 和 日期 组织),以便运行累计生产在每个新的 API_10 组。表中的每条记录都有一个名为 No 的字段,它是 MS Access 计算的自动编号,以便表具有主键。我所描述的示例如下所示:
我的表:
No API_10 Date Production
1 1 1/1/2010 1000
2 1 2/1/2010 500
3 2 7/1/2014 300
4 2 8/1/2014 400
我的查询:
No API_10 Date Production Cumulative_Production
1 1 11/1/2010 1000 1000
2 1 12/1/2010 500 1500
3 2 27/1/2014 300 300
4 2 28/1/2014 400 700
以下是用于在 MyQuery 中创建 Cumulative_Production 列的代码示例(在 MS Access 上的 Expression Builder 中键入):
累积产量:
DSum("[Production]","[MyTable]","[API_10]='" & [API_10] & "' AND [No]<=" & [No])
请注意,这是实际查询/表的简化版本。真正的查询还会计算另一个名为 Normalized_Prod_Month 的字段,它计算每个唯一 API_10 的生产日期数(从 1 开始),如下所示:
NORMALIZED_PROD_MONTH:
DCount("[Date]","[MyTable]","[API_10]='" & [API_10] & "' AND [No]<=" & [No])
任何改进这些类型计算的技巧都会有很大帮助!!
【问题讨论】: