2013-05-30 68 views
0

很慢我打開下面的查詢DAO記錄:.MoveNext在DAO記錄

SELECT sd.pointnumber 
FROM (sdn INNER JOIN sd ON sdn.filename=sd.filename) 
INNER JOIN o ON sd.oID = o.id 
WHERE o.id = [oID] 
And sdn.Line <> [sdnLine]; 

sd大約有500000條記錄和30列,表sdn有大約5000條記錄和4列。表O有6條記錄和12列。

我打開記錄有:

Dim qdf As QueryDef 
Set qdf = CurrentDb.QueryDefs("oSdSdn2") 
qdf.Parameters("oID") = oID 
qdf.Parameters("sdnLine") = line 
Set rs = qdf.OpenRecordset(dbOpenForwardOnly) 

當我有數據庫作爲唯一的用戶,我第一次打電話.MoveNextrs開放的,它需要1-2分鐘才能執行;之後,每個.MoveNext發生在不到一秒鐘。當數據庫中有多個用戶時,每個.MoveNext需要1-2分鐘。

表已在sdn.Line,o.idsd.oID上編入索引。

我試圖在降低行的總數進程的希望不同的結構化查詢:

select pointnumber from 
(select pointnumber,filename from sd where oID=[oID]) sd 
inner join 
sdn 
on 
sd.filename=sdn.filename 
where 
sdn.line<>[sdnLine] 

這並沒有改變的時候都沒有。有沒有什麼辦法來加快這個查詢,特別是如果有多個用戶?

回答

0

這不是你的查詢。這是你的桌子。您的過濾器位於較小的表格上,因此索引不是必需的。但是,根據您使用查詢的方式,您的大表sd需要filename上的索引。