我有以下查詢在我的Access 2003數據庫:SQL Access查詢速度
SELECT
Projet.OTP AS OTP,
NumeroDA,
SUM(Quantite*PrixReelCommande) AS PrixTotal,
FIRST(Fournisseur1) AS Fournisseur,
FIRST(Projet.NumeroCommandeReservation) AS NumeroCommande,
FIRST(Projet.GestionContrat) AS GestionContrat,
FIRST(Projet.Acheteur) AS Acheteur,
MIN(DateLivraisonContractuelle) AS DateLivraisonContrat,
MAX(DateFournisseurLivraison) AS DateLivraisonFournisseur,
FIRST(InfoProjet.NomInstallation) AS NomInstallation,
FIRST(InfoProjet.TitreMandat) AS TitreMandat
FROM Projet LEFT JOIN InfoProjet ON Projet.OTP=InfoProjet.OTP
WHERE NumeroDA Like "#*" And NumeroDA IN (
SELECT NumeroDA FROM Projet
WHERE NumeroCommandeReservation="" Or NumeroCommandeReservation Is Null Or NumeroCommandeReservation="0"
)
GROUP BY Projet.OTP, Projet.NumeroDA
ORDER BY Projet.OTP, Projet.NumeroDA
表謨有〜2500行和InfoProjet只有200行。在Access中打開這個表格不到1秒。但是,執行上述查詢需要超過5秒鐘。
我想知道是否有任何事情可以改善此查詢的性能。查詢中是否有某些內容我應該避免使用性能?或者我只是在訪問限制下?我猜在子查詢中使用Like
沒有幫助,但是肯定還有其他的東西會降低查詢速度。
你對(OTP)指數雙雙表上?如果是這樣,索引是否包括列NumeroDA。你有NumeroCommandeReservation索引,還包括NumeroDA? – ljh 2013-03-25 17:07:12
OTP上沒有索引,有多個具有相同OTP的行。但是我們可以在Access中設置非唯一索引,您認爲這對於這種情況會有幫助嗎? NumeroDA相同,有多行具有相同的NumeraDA和NumeroCommandeReservation。這些PK是NumeroListe和NumeroArticle,都以重複支持爲索引。 – dnLL 2013-03-25 17:12:16
它不必是唯一的,非唯一索引也可以幫助查詢,如果可以創建複合索引或覆蓋索引,它可以幫助更多。 – ljh 2013-03-25 17:15:31