|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : mars 2002 Messages : 119 ![]() |
Voila j'ai ce petit code afin d'enregistrer un nouveau client.
La table CLIENT comprend a 22915 clients Lorsuqe je fais le post, il se passe prés de 15 à 20 secondes pour l'enregistrement en local, mais sur un serveur prés de 30 secondes Comment faire pour rendre plus rapide l'enregistrement J'ai essayé avec un tblclient.insert et tblclient.post c'est pareil Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Quel est la définition de ta table ?
Copie les méta data de celle ici et précise quel sont les index, clé et trigger attachée à celle ci. |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : mars 2002 Messages : 119 ![]() |
Interbase 5.6
Delphi 3.0 Definition de la table page Size 1024 Number of Db pages allocated = 96371 Sweep interval 20000 Clé primaire PRIMARY KEY (CODE_CLI)) Index créé CREATE INDEX CODE_CLI ON CLIENT (CODE_CLI, NOM_CLI) CREATE INDEX NOM_CLI ON CLIENT (NOM_CLI, CODE_CLI) Il n'y a pas de triggers |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
Si tu recherche par CODE_CLI, Interbase va utiliser l'index de la clé primaire donc pas celui ci. Si tu recherche par NOM_CLI il va utiliser l'index que tu as créé : (NOM_CLI, CODE_CLI). A mon avis l'index sur (CODE_CLI, NOM_CLI) est inutile et ralenti les mise à jours, et insertion sur la table. Mais au point de passer à 20 ou 30 secondes... Bon il faut que tu identifies si ce ralentissement provient d'interbase ou de ton programme : Lance IBConsole et ISQL sur ta base. et execute la requete d'insertion et regarde dans la partie résultat tu as un onglet statistique qui t'indiquera le temps qu'il a mis pour exécuter cet ordre, et les index utilisés etc... Si les performances sont correctes c'est ca vient de ton programme. Revient apres ce test, on va essayer de trouver d'ou ca vient en fonction de ce résultat. |
|
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : mars 2002 Messages : 119 ![]() |
Ok je vais faire le test
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : mars 2002 Messages : 119 ![]() |
Voila le résultat
par le programme Environ 10 à 15 secondes PAr ib sql 0.44 sec |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Bon je pense qu'on peut en conclure que ca vient de ton programme...
A première vu je ne vois pas trop dans le code que tu as mis ce qui pourrait ralentir autant la requete... Quand tu dis que ca met 15 à 30 secondes tu veux dire que le programme est bloqué pendant ce temps ? |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : mars 2002 Messages : 119 ![]() |
Oui c'est ça
Lorque j'arrive sur l'instruction EXecsql, il met ces 15 secondes Avant de passer à la suivante |
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : mars 2002 Messages : 119 ![]() |
ça y est je viens de trouver
J'ai omis de mettre l'instruction Prepare avant le Execsql Merci pour votre aide |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
ca doit venir des paramètres de connexion je pense..
T'as essayé avec les composants IBx ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com