Re: Extrème lenteur au premier enregistrement ou suppression |
Sujet: Re: Extrème lenteur au premier enregistrement ou suppression par JYM sur 8/6/2006 16:22:51 Salut Romuald , alors voilà : un fichier commande (438 octets par enr.) clé unique NumCde entier sur 8 octets (liaison 0,n 1,1) par numCde un fichier ligneCommande (216 octets par enr.) dont 2 rubriques mémos peut souvent remplies LigneCommande possède une clé étrangère unique ligneCommande_PK : Numcde+NumLigne (NumLigne entier sur 2 octets) Phénomene ! Soit : Création de la première commande : (création donc aucun filtre) . l'ajout de la première ligne de commande met 2 mn. ensuite aucun souci même pour de nouvelle commande saisie. Soit Modification d'une première commande: Pour des raisons pratiques , je suis obligé d'éffacer toutes les lignes d'une commandes dans la base et de les ajoutées ensuite. le nombre de ligne par commande est d'environ 20. Les 2 minutes d'attentes ou plantage du pc , se font au premier appel de l'application à la fonction hajoute ,ou hsupprime (avec le disque dur qui tourne un max) Ensuite pas de problème // ouverture du projet hcreationsiinexistant("*") --> 1 seconde pour l'ajout de ligne de commande. Hajoute(lignecde) pour la suppression : j'ai essayé 2 méthode: REQ_SUPP_LIGNECDE.P_NUMCDE=commande.NUM_CDE HExécuteRequête(REQ_SUPP_LIGNECDE) ou HFiltre(LIGNECDE,NUM_CDE,COMMANDE.NUM_CDE,COMMANDE.NUM_CDE) HLitPremier(LIGNECDE,NUM_CDE) TANTQUE PAS HEnDehors(LIGNECDE) HSupprime(LIGNECDE) HLitSuivant(LIGNECDE,NUM_CDE) FIN HDésactiveFiltre(LIGNECDE) (j'ai aussi essayé en filtrant sur ligneCommande_PK) au déboggeur , le hfiltre est immédiat c'est vraiment sur la fonction hsupprime que ce la m... Nb : Aucun Trigger , ni de table fille sur ligneCommande. pour tout ce qui est lecture d'enr. aucun souci. J'ai l'impression que Windows essaye de charger en cache tout les index du fichier ligneCommande au premier appel de d'une de ces deux fonctions. (j'ai aussi essayé hoptimise() au démarrage du projet et là le phénomène n'apparait plus dans la saisie ou modification de commande mais à l'ouveture (logique), soit l'application rend la main au bout de 3 ,4 minnutes ou alors plante carrément (toujours au premier lancement de la journée). j'ai effectué les tests en client/ serveur. et là idem, sauf que c'est le disque dur serveur qui se met à tourner pendant 2 minutes. Tester au déboggeur,c'est vraiment la commande hajoute ou hsupprime qui déclenche le phénomène. Peut-être une piste , a savoir qu'a chaque ligne de produit affichée dans la fiche de commande , un calcul statistique est effectué sur ligneCommande concernant le produit en cours et le client.( stat calculé par requête) mais aucun temps d'attente concernant cet affichage, et requete annulée si tôt affichée, et retour du pointeur sur la commande en cours) JYM |