PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Lenteur de requete
Lenteur de requete
Débuté par nicolas, 29 juin 2005 17:07 - 2 réponses
Posté le 29 juin 2005 - 17:07
Bonjour a tous,

Voila mon probleme :

Je veux créer une table fichier a partir d'une requete qui me trie un autre fichier HF decrit dynamiquement auparavant dont les enregsitrements proviennent de l'importation d'un fichier texte.

Alors voila ce que j'ai fait :

Requete :
SELECT * FROM [A1005-ENZ],TABLE_RB WHERE LEFT(Champ7,2)=TABLE_RB.DEP ORDER BY TABLE_RB.ZONE,Champ7,Champ8

A1005-ENZ est le fichier HF decrit dynamiquement

ensuite je parcours ma requete et la surprise

Code du parcours de la requete :

HLitPremier("REQ")
TANTQUE PAS HEnDehors("REQ")
HCopieEnreg({cNomFichierHF}+"TRI","REQ",hValDéfaut)
HAjoute({cNomFichierHF}+"TRI")
HLitSuivant("REQ")
FIN

Avec l'analyseur (sur un fichier de 44000 lignes et 12 champs) : temps d'execution de HLitPremier consomme 129 secondes ce quime semble enorme alors peut etre un probleme dans me requete...

Merci d'avance

Cordialement,

Nico
Posté le 29 juin 2005 - 19:09
Le temps de traitement vient certainement du fait qu'ici, aucun index ne peut être utilisé => table scan.
J'ai juste une question : pourquoi copier les enregistrement d'un fichier vers un autre ?
Une simple table fichier, avec un filtre, ne serait pas plus efficace ?

Frédéric.
Posté le 30 juin 2005 - 13:35
C'est lent à cause du order by....

Parce que ce qui se passe, c'est que ça bloque sur hlitpremier.

Je m'explique, normalement, les requetes sont exécutées de façon asynchrone et toi, tu peux commencer à traiter les enregistrements retournés au FUR ET A MESURE qu'ils arrivent.

Seulement là, du fait que t'as demandé un ordre spécial pour ton resultSet, le traitement est obligé d'attendre que la requete soit complètement exécutée avant de commencer, sans quoi il n'est pas sûr de respecter l'ordre que tu as choisi dans order by. Ca explique que ce soit long tout particulièrement sur hlitpremier().


alors question : ta zone d'order by est une clé?

Car si ya pas d'index, les enregistrements doivent être triés par comparaison, ce qui demande un travail vraiment très long.