У меня есть следующий запрос в моей базе данных Access 2003:
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
В таблице Projet около 2500 строк, а в InfoProjet всего 200 строк. Открытие любой из этих таблиц в Access занимает менее 1 секунды. Однако выполнение вышеуказанного запроса занимает более 5 секунд.
Я хотел бы знать, могу ли я что-нибудь сделать, чтобы улучшить производительность этого запроса. Есть ли в запросе что-то, чего мне следует избегать с точки зрения производительности? Или у меня просто ограничения доступа? Я предполагаю, что использование Like
в подзапросе не помогает, но должно быть что-то еще, что замедляет запрос.