PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Probleme de lenteur
Probleme de lenteur
Débuté par nicolas.glorioso, 21 avr. 2005 20:13 - 3 réponses
Posté le 21 avril 2005 - 20:13
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 22 avril 2005 - 16:13
Bonjour, c'est vrai que c'est bizarre.

Voici peut-être quelques "trcucs" :
- Essayez le INNER JOIN au lieu de la simple virgule entre les deux tables
- Placez des index sur vos tables (avec hyperfile ça s'appelle des "Clés non uniques" je crois
- Choisissez bien vos champs au lieu de l'horrible "*" du SELECT
- Essayez de voir s'il n'y a pas une corruption de la table

Amicalement.
Posté le 23 avril 2005 - 15:20
"Nicolas" <nicolas.glorioso@caramail.com> a écrit dans le message de
news:4267c576$1@news.pcsoft.fr...
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...

si tu n'as pas d'index c'est normal. pour chaque lecture de A1005-ENZ (44000
lignes) tu vas regarder si la ligne existe dans TABLE_RB. Pour tous les
enreg retenus tu faire un tri sur 3 champ.

Pour moi il te faut créer un champ13=LEFT(Champ7,2), créer un index sur
Champ13, créer un index sur TABLE_RB.DEP, faire un HOptimiseRequete() après
ton import de fichier.

Tiens nous au courant ;-)

Merci d'avance


De rien
Posté le 25 avril 2005 - 16:43
Beaucoup de gens me dise d'indexer mon champ13 créer a partir d'un left(Champ7,2) mais le probleme est le suivant :

1- J'importe mon fichier client
2- Je sélectionne les champs nécessaire au tri (ici champ7=code postal et champ8 = commune)
3- Il me sélectionne les 2 premiers caracteres du champ7 (le département afin de trier mon fichier sur la zone(TABLE_RB) et ensuite sur le code postal)

Ma question est la suivante :

Est il possible d'ajouter un champ (ex:champ13) a une table décrite dynamiquement???

En effet je ne peux pas la décrire au moment de l'import car je ne sais pas a ce moment ou se trouve le code postal... c'est par la suite grace a un petit apercu que l'on determine le champ contenant le code postal...

Merci bien a vous...

PS : je cherche encore et encore