2017-08-09 75 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添加索引大大提高了性能,谢谢。 –