从Access中的另一个表返回值时,为什么我的查询运行得如此之慢?

时间:2014-02-07 16:40:40

标签: sql performance ms-access query-optimization

我在MS Access中运行一个相当简单的查询。我试图使用WHERE子句从表中过滤结果。我的发言如下:

SELECT DATA.*
FROM DATA
WHERE DATA.Account_Number In (
    SELECT Lookup.AccNum 
    FROM Lookup
);

我注意到这个查询的执行速度非常慢。

相反,如果我明确命名帐号,结果会在很短的时间内返回。

SELECT DATA.*
FROM DATA
WHERE DATA.Account_Number In ("00001","00002","00003","00004","00005");

第二个查询仅需几秒钟,而第一个查询只需几分钟就可以获得相同数量的帐户。

1 个答案:

答案 0 :(得分:2)

您似乎想使用Lookup来过滤DATA。您可以通过加入两个表来实现这一目标。

如果尚未编入索引,请在Lookup.AccNum上创建索引。

SELECT d.*
FROM
    DATA AS d
    INNER JOIN Lookup AS l
    ON d.Account_Number = l.AccNum;