Bonjour à tous !
J'ai un énorme souci (et vu que je débute avec l'administration de Base de données, je rame pas mal):
Je dois créer une application qui fournit des statistiques (CA, Marge, poids ...) sur des commandes passées par les clients.
Voici un exemple de requête :
Le souci, temps d'exécution = 8 minutes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 "SELECT Sum(PDSQTELIV*L.PXNET), Sum(PDSQTELIV*(L.PXNET-PXRVT)), Count(*) FROM LICOM L INNER JOIN COMMANDE C ON C.NOCDE=L.NOCDE AND L.STAT=1 AND C.STAT=1 AND DATELIV BETWEEN '2006-01-01' AND '2006-12-31' INNER JOIN CLIENT CL ON CL.NOCLI=C.NOCLI AND CL.NOREP BETWEEN 50 AND 98;"
Est ce normal, ou ai-je mal choisi l'écriture de la requête?
Il faut savoir que le count(*) renvoie 198000 enregistrments, et que sans le count, le temps d'exécution est aussi long.
Des index sont tous à colonnes unique:
- sur les nocde des tables COMMANDE et LICOM
- sur les nocli des tables COMMANDE ET CLIENT
- sur norep de CLIENT
- sur dateliv de COMMANDE
Merci de m'éclairer avec vos lanternes
Céline
Partager