lidybekham07
Messages postés13Date d'inscriptionlundi 5 mai 2008StatutMembreDernière intervention13 octobre 2009
-
6 oct. 2009 à 22:55
EricSQL
Messages postés33Date d'inscriptionsamedi 11 octobre 2008StatutMembreDernière intervention24 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
lidybekham07
Messages postés13Date d'inscriptionlundi 5 mai 2008StatutMembreDernière intervention13 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,.....
EricSQL
Messages postés33Date d'inscriptionsamedi 11 octobre 2008StatutMembreDernière intervention24 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 ?
lidybekham07
Messages postés13Date d'inscriptionlundi 5 mai 2008StatutMembreDernière intervention13 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
EricSQL
Messages postés33Date d'inscriptionsamedi 11 octobre 2008StatutMembreDernière intervention24 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...