【问题标题】:Access 2010 SQL subquery takes excessive time to runAccess 2010 SQL 子查询运行时间过长
【发布时间】:2017-08-09 11:14:44
【问题描述】:

我编写了一个查询,旨在返回用户交易之间的分钟数。 MS Access 需要 10 分钟才能运行它,我无法使用结果。如何提高其性能?

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;

【问题讨论】:

  • 我很惊讶您的查询完全运行 - t2 没有出现在 from 子句中或作为别名???
  • 编辑了我的道歉

标签: sql ms-access subquery ms-access-2010


【解决方案1】:

您可能会考虑将数据库切换到更强大的东西。大多数数据库都支持 ANSI 标准窗口函数,可以直接执行您想要的操作。

不过,对于您的情况,请先尝试在TestDataset(OperatorID, DtCreated, Id) 上建立索引:

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

【讨论】:

  • 虽然我不会通过上面的语句来放置索引。通过 Access GUI 添加的索引大大提高了性能,谢谢。
猜你喜欢
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 2021-09-21
  • 1970-01-01
  • 2021-09-13
  • 2011-12-03
  • 1970-01-01
相关资源
最近更新 更多