2016-12-20 141 views
3

我有一個需要選擇基於以下SQL中的所有記錄:SQL查詢改進 - MSACCESS 2007

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

有171k記錄表1和70K記錄表2中,其中 'ID3 IN(151157)'。

不幸的是,該查詢需要永久;事實上,我從來沒有在配備32GB內存和四核I7處理器的系統上看到它的完整性。 30分鐘後放棄取消。

我認爲這裏有一個SQL大師或兩個可以告訴我如何改進這個查詢,並在一分鐘內完成。

回答

1

你可以嘗試加入子查詢:

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

如果不行,我會考慮創建子查詢的臨時表和引用這一點。

+0

上面的查詢的語法會在MSAccess 2007中產生錯誤。 但是,您使用子查詢創建臨時表然後根據上述方式運行連接的想法工作得非常好,並且兩者都在5秒內創建臨時表和連接查詢!謝謝! – user2184214