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 并引用它。
我需要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 并引用它。