2017-08-09 37 views
0

我寫了一個查詢,旨在返回用戶事務之間的分鐘數。 MS Access需要10分鐘來運行它,我無法使用結果。我怎樣才能提高其表現?訪問2010 SQL子查詢需要花費過多的時間來運行

SELECT TestDataset.ID, TestDataset.OperatorID, TestDataset.DTCreated, 
     (SELECT TOP 1 t2.DtCreated 
     FROM TestDataSet as t2 
     WHERE t2.OperatorID = TestDataset.OperatorID AND t2.DtCreated < TestDataset.DtCreated 
     ORDER BY t2.DtCreated,t2.ID 
     ) as PreviousTransaction, 
     Minute([DtCreated]-[PreviousTransaction]) AS Minutes 
FROM TestDataset 
ORDER BY TestDataset.OperatorID, TestDataset.DTCreated; 
+0

我很驚訝你的查詢運行在所有 - T2不會在FROM子句中或作爲一個別名出現???? –

+0

編輯我的道歉 –

回答

2

您可能會考慮將數據庫切換到更強大的功能。大多數數據庫都支持ANSI標準窗口函數,它們可以直接執行您想要的操作

對於你的情況,不過,第一次嘗試在TestDataset(OperatorID, DtCreated, Id)指數:

create index idx_TestDataset_OperatorID_DtCreated_Id on TestDataset(OperatorID, DtCreated, Id); 
+0

雖然我不是通過上述聲明來放置索引。通過Access GUI添加索引大大提高了性能,謝謝。 –