我有訪問查詢確實需要時間來執行。現在,我必須經過至少四次查詢才能得到我想要的結果,這個結果是小組排名前四的。這裏是查詢。優化或簡化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