Access Query永远在执行

时间:2016-06-27 14:23:43

标签: sql database ms-access

我正在尝试优化使用Access作为数据库的遗留应用程序。一些查询的问题是,他们在运行时间后没有返回任何内容。我试图通过逐个添加连接来找出问题。现在我对其中一个查询感到震惊,因为它没有返回任何内容并且永远执行... 在添加使用SubQueries获取数据的Left Join之后,查询的行为如下所示 任何建议都会非常感激......

2 个答案:

答案 0 :(得分:1)

尝试在这些列的表上添加索引:

[tbl ASDT P1T_AGENT_STAFF] - (STF_END_EFF_DT)
[qry List ASDT tbl ASDT P1T_AGENT_STAFF Active MAX END DATE] - (maxOfSTF_END_EFF_DT)

虽然您似乎甚至没有使用此列,但您已在maxOfSTF_END_EFF_DT上使用此列,那么为什么要加入此表?

答案 1 :(得分:1)

加入聚合列(MaxOfColumn)可能效果不佳。

我建议:将[qry Aggregate Query]的结果插入到临时表中。将该表加入您有问题的查询中。

您可以使用SELECT INTO查询(并预先删除旧临时表)或INSERT INTO查询(并预先清空临时表)。

修改
一旦你原则上工作了,我建议使用Append查询(INSERT INTO)而不是Make Table查询。

因此,您的临时表保持不变,您可以在用于JOIN的字段上添加索引,以进一步提高性能。

要打开主查询,请在VBA中执行:

' Empty temp table
CurrentDb.Execute "DELETE * FROM Temptable"
' Run Append query
CurrentDb.Execute "NameOfYourAppendQuery"
' Open main query
DoCmd.OpenQuery "MainQuery"