Lenteur d'execution dans une requte

lidybekham07 Messages postés 13 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 octobre 2009 - 6 oct. 2009 à 22:55
EricSQL Messages postés 33 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 24 février 2011 - 14 oct. 2009 à 19:40
bonsoir,
mon problème est le suivant
j'ai creé une requete qui calcule le chiffre d'affaire ht d'un client ainsi que son total TVA,Total Remise,,... et ceci par détail produit
exemple
mr dubois
article1 chiffre ht Totalremise1 ....
article2 chiffre ht Totalremise2 ...
article3 chiffre ht Totalremise3....
j'explique je travaille sur une base de donnée de gestion commerciale c'est à dire
j'ai une
[*] table tiers
[*] table Pièce: Contient toutes les pièces que peut etablir un tiers (Contient la cle tiers)exemple "commande,proforma,facture ,bon de livraison ,avoir sur vente,facture achat ,....
[*] table Contenus pièces :contient les differents articles de chaque pièce (prix,ristourne,qte,tva,...)(Contient la cle produit,clePiéce)

Moi ce que j'ai fait j'ai pris ma table pièce et contenus pièces et table produit (type de jointure j'ai fait inner join)
j'ai affiche dans cette requête cléTiers,prixunitaire,cleproduit,ristourne,j'ai filtré que sur les pièce de vente
En exécutant ma requête ceci ma pris 6 secondes
j'ai utilisé cette requête pour faire le calcul des chiffre d'affaire ht sachant que dans le calcul j'avais des if que j'ai remplacé ceci à réduit le temps
j'ai joint cette requête avec deux autre requête (sachant que ces deux autres requêtes je les utilisent que pour affiché des informations)
le pbm est que dans une base de donnée ou la table "detail pièce" n'est pas trop volumineuse la requête s'exécute rapidement mais dans le cas ou la table "détail pièce est volumineuse exp 200000 produit le temps d'exécution est de 50s et ceci me pose un gros souci pour mon application
quel sont les trucs à éviter afin de réduire le temps
dites mois quand j'ai des jointure entre plusieurs requête et j'exécute comment fait acess

j'espere que j'ai bien exoliqué mon pbm

5 réponses

EricSQL Messages postés 33 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 24 février 2011
8 oct. 2009 à 21:04
Sur quel SGBD es-tu ?
Quelles sont les définitions des tables et des indexes ?

/Eric
0
lidybekham07 Messages postés 13 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 octobre 2009
12 oct. 2009 à 12:45
Bonjour
C'est une base de donnée de type access
toutes les clés sont indéxées
Définition table
Produit: CleProduit,Code,Designation,Reference,CleFamilleArticle,...
Pièce:ClePièce,CleTypePièce(si c'est une pièce d'entree ou de sortie),CleTiers,DatePièce,ReferencePièce,MontantHT,TotalTvaPièce,...
ContenuPièce: CleDetailPièce,ClePièce,CleProduit,PrixUnitaireHt,Remise%,Tva,...
Tiers:CleTiers,Nom,Adresse,CleWilaya,.....

Merci d'avance
0
EricSQL Messages postés 33 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 24 février 2011
13 oct. 2009 à 20:29
Donc si j'ai bien compris tu as des indexes seulement sur les clés.
Je suppose que tu ne souhaites pas récupérer l'ensemble de la table pièces mais qu'une partie. Qu'elle est ton point d'entrée ? c'est un code de pièce ? une personne ?
As-tu pensé à ajouter un index sur la colonne correspondante à ce point d'entrée ?

/Eric
0
lidybekham07 Messages postés 13 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 13 octobre 2009
13 oct. 2009 à 21:55
Pour chaque tiers de la table pièce je prend chaque produit vendu à ce client (les produits existant dans la table détails pièce )
pour chacun de ces produits
je calcule le chiffre d'affaire,Total Remise,Total Ristourne,QteVendus,... et ceci en parcourant les différents détail pièces ou se trouve ce même produit.

Je sais pas si je suis assez clair ou pas
et j'ai une autre question
dans une requête utilisé des tables est plus rapide que l'utilisation d'autres requêtes
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EricSQL Messages postés 33 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 24 février 2011
14 oct. 2009 à 19:40
Il te faut un index sur cleTiers de la table pièce, et un sur clePiece de la table contenuPiece. Ainsi l'accès aux pièces à partir du client sera beaucoup plus rapide.

Pour répondre à ta seconde question, cela dépend du volume de la table, des indexes présents...

/Eric
0
Rejoignez-nous