我有兩個表,如父子。在父表中,有7211條記錄。在兒童中,有169498條記錄。在這兩個表之間沒有關係(意味着沒有設置外鍵,但使用parentID)。在子表中,有額外的記錄和缺少的記錄。Access 2000查詢執行時間
爲樣本,
Parent Table - tblParent
PID PName
A001 John
B002 Mary
... ...
Child Table - tblChild
PID TID Desc
A001 056 Book
Y004 087 Pen
... ... ...
我的查詢是像下面,
SELECT PID
FROM tblParent
WHERE PID NOT IN
(
SELECT PID
FROM tblChild
)
與實際不運行它。的記錄,MS Access 2000突然停止。如果我用10條記錄測試它,它可以正常工作。主要原因是什麼?沒有記錄?
我嘗試另一種方式。
SELECT C.PID, P.PID
FROM tblChild C, tblParent P
WHERE C.PID <> P.PID
此時,乘法結果出來。 (我的意思是一個C.PID與所有P.PID,然後等......)
如何在Access 2000中最短的執行時間內獲得額外的和缺少的記錄?
NOT IN在Jet/ACE中沒有很好的優化,有時不會使用雙方的索引。爲什麼不將它重寫爲LEFT JOIN?這肯定會使用雙方的索引。 –