我需要根据以下SQL选择所有记录:
Select ID, ID2 From Table1 Where ID2 NOT IN (Select ID2 From Table2 Where ID3 IN (151,157))
表1中有171k记录,表2中有70k记录,其中'ID3 IN(151,157)'。
不幸的是,该查询需要永远;事实上,我从未在具有32GB内存和四核I7处理器的系统上看到它完成。我放弃并在30分钟后取消。
我认为这里有一两位SQL大师可以告诉我如何改进这个查询并让它在一分钟内完成。
答案 0 :(得分:1)
您可以尝试加入子查询:
Select ID, ID2
From Table1
LEFT JOIN
(Select ID2
From Table2
Where ID3 IN (151,157))
WHERE ID2 IS NULL
如果这不起作用,我会考虑将子查询创建为临时表并引用它。