PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Optimisation requete SQL => J'ai compris !
Optimisation requete SQL => J'ai compris !
Iniciado por metsdumanche, 01,dic. 2004 19:09 - No hay respuesta
Publicado el 01,diciembre 2004 - 19:09
Bonjour,

Je viens de découvrir ce qui expliquait que certaines requêtes
mettaient 10 fois plus de temps à s'exécuter avec Windev
Hyperfile, qu'avec Delphi en ADO sur table Access ...
Quand je dis 10 fois, c'est mesuré ! Sur les mêmes tables,
même structure, mêmes requêtes.

Et j'ai trouvé d'où ça venait. :-)
Aucun rapport avec le moteur SQL (heureusement).
En fait, il apparaît que Windev perd énormément de temps
à chaque fois que l'on récupère une des colonnes retournées
par la requête en utilisant MaRequête.valeur !!!

Par exemple, j'ai une requête qui retourne 1000 lignes (d'une
table qui en contient à peine plus). La requête met moins
d'une seconde à s'exécuter. Normal.

Ensuite, je rentre dans une boucle :
TANTQUE HTrouve(MaRequête)
...
HLitSuivant(MaRequête)
FIN
Si je ne fais rien dans cette boucle, c'est instantané. Normal.

Par contre, si je rajoute plein d'instructions qui ne font rien
d'autre que de lire les valeurs de la ligne retournée, ça démultiplie
le temps d'exécution de façon exponentielle ! Ainsi, j'arrivais à
10 secondes au lieu d'1, rien qu'en lisant plusieurs fois les
MaRequête.valeur !

Ensuite, toujours dans la boucle de lecture, j'ai rangé une fois
pour toutes dans des variables locales les valeurs retournées
par ma requête (1 ligne). Par la suite, j'ai utilisé ces variables
au lieu de relire les MaRequête.xxx, et le même traitement
prend maintenant moins de 2 secondes (au lieu de 10).

C'est à mon avis plus qu'un "détail", et j'ai pensé que vous
pouviez avoir envie de tester ... ;-)
Si le support veut confirmer ou infirmer, ce sera avec plaisir ...

--
Jean-Michel CAMBOT metsdumanche chez baliciel.com
Baliciel HomePage : http://www.baliciel.com/