我在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");
第二个查询仅需几秒钟,而第一个查询只需几分钟就可以获得相同数量的帐户。
答案 0 :(得分:2)
您似乎想使用Lookup
来过滤DATA
。您可以通过加入两个表来实现这一目标。
如果尚未编入索引,请在Lookup.AccNum
上创建索引。
SELECT d.*
FROM
DATA AS d
INNER JOIN Lookup AS l
ON d.Account_Number = l.AccNum;