![]() |
1
1
如果没有看到SQL for tm\U materialsUsedByPart,我们只能猜测它在做什么。可能它读取整个表或一组联接表,并使用GROUPBY将Sum(价格)聚合为SumOfPrice。 对基础表执行DSum应该更快,特别是对[Part]字段进行索引时。
编辑 :针对基表的DSum要比针对聚合查询的DLookup快,这一点我错了。正如@Thomas所建议的,在我的简单测试中,这两种情况的查询计划是相同的。 这是我的问题, qryMinutesPerClient客户机 :
那么
和
计划是一样的:
最重要的性能问题涉及到“使用rushmore”,这是可能的,因为我的CLIENT\u ID字段是索引的。没有这个索引,就不能在查询计划中使用Rushmore,DLookup和DSum方法都是有效的 明显地 |
![]() |
2
1
还有两个其他选项:相关子查询或派生表。关联子查询需要将查询中的列声明为查询本身:
在Access中,一个派生表需要创建一个保存的查询来进行所有的汇总,然后将该查询连接到主查询中。尽管可以在主查询中动态地构建totals查询,但我的经验是,使用保存的查询和标准联接,Access会更愉快。如果你向我们展示更多你想要完成的事情,你可能会得到一些更具体的答案。 编辑 在IMO看来,最快的解决方案是通过保存的查询在表单的源代码中包含总数。也就是说,不使用DLookup或DSum,而是通过连接到计算合计的查询,将合计作为表单记录源的一部分包含进来。
最后,如果您要使用域聚合函数,并且DLookup中使用的查询的唯一目的是为这个表单提供总计,那么IMO,使用DSum更有意义,因为它使读者更清楚地了解您使用域聚合函数的意图。 |
![]() |
Sweepy Dodo · JSON lite的格式化 7 月前 |
![]() |
giantjenga · 优化整数向量到二进制向量的转换 8 月前 |
![]() |
Zegarek · Postgresql递归查询未提供预期结果 8 月前 |
![]() |
Joe · 为什么这两个查询之间的性能存在如此大的差异? 1 年前 |
![]() |
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 1 年前 |