我可以加快Ms Access 2007上的這個聲明嗎?查找丟失的鑰匙
SELECT *
FROM (SELECT DISTINCT p.zipcode, p.place FROM p) AS tmp
WHERE NOT EXISTS
(SELECT * FROM zipcodes WHERE
(tmp.zipcode=zipcodes.zipcode) AND (tmp.place=zipcodes.place));
我想找到(郵編,地點)在p
表不在zipcodes
表的組合。
p
表格比較大,但是當縮小到tmp
時有大約40.000個條目。 zipcodes
表有大約15.000個條目。 zipcodes
表被編入索引(郵編,地點)。
它需要一個多小時才能得到我的結果。我能更快得到它嗎?我可以在Access 2007中看到執行計劃嗎? (我不是普通的Access用戶,也不是SQL專家。)
親切的問候, Karsten。
沒有理由在返回NULL時做'NOT EXISTS(SELECT * ...)'應該做同樣的事情(你只是檢查是否存在匹配的行,存儲在行中的實際數據最終是不相關的) – 2011-06-03 14:32:57
我是否正確理解我可以放棄EXISTS關鍵字,即'WHERE NOT(SELECT *)...'? – 2011-06-03 14:49:00
不,您需要存在'關鍵字,但您的'select'語句可以簡單地'select null'而不是'select *',因爲你實際上並不關心行中的數據是什麼,只有沒有行符合你的條件。 – 2011-06-03 14:54:16