SQL 查询改进 - MSAccess 2007

SQL query improvement - MSAccess 2007

我需要Select所有基于以下SQL的记录:

Select ID, ID2 From Table1 Where ID2 NOT IN (Select ID2 From Table2 Where ID3 IN (151,157))

Table1 中有 171k 条记录,Table2 中有 70k 条记录,其中 'ID3 IN (151,157)'。

不幸的是,该查询需要很长时间;事实上,我从未见过它在具有 32GB 内存和四核 I7 处理器的系统上完成。我放弃并在 30 分钟后取消。

我想这里有一两个 SQL 大师可以告诉我如何改进这个查询并让它在一分钟内完成。

您可以尝试加入子查询:

Select ID, ID2
From Table1
LEFT JOIN 
(Select ID2
 From Table2
 Where ID3 IN (151,157))
WHERE ID2 IS NULL

如果这不起作用,我会考虑将子查询创建为临时 table 并引用它。