我有访问查询确实需要时间来执行。现在,我必须经过至少四次查询才能得到我想要的结果,这个结果是小组排名前四的。这里是查询。优化或简化MS Access查询
- Query1 - 添加第3列的计算字段。
- 查询2 - 为列3添加累积字段。
- Query3 - 添加我在其中使用column3进行计算的计算字段。 calcfield1,calcfield2,calcfield3使用UNION查询将它们组合到一列(NewColumn)中。总结NewColumn并按GroupID对它们进行分组。
- Query4 - 按GroupID在NewColumn中选择前4个值。
样本输出(顶部通过的GroupID 4个值NewColumn的):
Group1 1.45
Group1 1.00
Group1 0.45
Group1 0.20
Group2 8.20
Group2 4.48
Group2 3.44
Group2 2.00
当运行Query4,需要一段时间来执行(至少10分钟)。由于累计百分比计算,查询必须返回所有记录。
我在Query3中尝试了HAVING子句,这样Query4中的行将被最小化,当我选择Top 4但我无法得到它的工作。我也尝试过在Query2中获得前四名,以便后续查询有更少的行来处理,但查询需要更多时间,我不得不中断查询的执行。
我想简化或至少优化查询。
表结构:
Table1:
ID - Autonumber
GroupID
Tip1
Tip2
Tip3
Tip4
Sample data Table1:
GroupID Tip1 Tip2 Tip3 Tip4
171 1 5 4 8
172 2 7 5 3
173 8 16 10
Table2:
ID - Autonumber
GroupID
Result1
Result2
Result3
Sample data Table2:
GroupID Result1 Result2 Result3
171 1 5 4
172 12 7 5
173 8 6 3
Table 1和表2是使用群ID
你可以显示你的表结构和一些样本输入数据吗 – rene
是的,Query3一定是瓶颈,因为三个字段合并成一个。如果我可以在Query3中按组获得前4名,则可以消除Query4。但我不知道该怎么做,因为我必须在Select Top 4子查询中使用HAVING子句。 – matley
更新:只有Query4非常慢。其他查询在合理的时间内返回记录。 – matley