PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Lenteur extrême pour copier le résultat d'une requete HF Classic vers HF C/S
Lenteur extrême pour copier le résultat d'une requete HF Classic vers HF C/S
Débuté par Alain, 04 mar. 2021 08:40 - 7 réponses
Membre enregistré
65 messages
Posté le 04 mars 2021 - 08:40
Bonjour,

J'utilise Windev 25

l'envoi des données sur le serveur est extrêmement lent.

37 sec pour envoyer160 fois des lignes comme :

FR 1949

447 sec pour envoyer 1269 fois des lignes comme :

FR 0,01

Mon analyse contient les fichiers locaux et les fichiers C/S (la connexion au serveur HFCS est dans l'analyse)
en local : Faciales
sur serveur : CS_Faciales

exemple :

gRequeteSQL = "SELECT * FROM Faciales WHERE FAC_Pays = '" + vPays + "'"

SI PAS HExécuteRequêteSQL(MaREQ, hRequêteDéfaut, gRequeteSQL) ALORS
Erreur(HErreurInfo())
SINON
HLitPremier(MaREQ, hSansRafraîchir)
TANTQUE PAS HEnDehors(MaREQ)
CS_Faciales.FAC_Pays = MaREQ.FAC_Pays
CS_Faciales.FAC_Faciale = MaREQ.FAC_Faciale
HAjoute(CS_Faciales)
HLitSuivant(MaREQ)
FIN
FIN

J'ai tenté d'autres méthodes comme par exemple :

POUR TOUT Faciales AVEC FAC_Pays = vPays
HCopieEnreg(CS_Faciales, Faciales)
HAjoute(CS_Faciales)
FIN

Toujours aussi lent voir plus lent

A l'origine je souhaitais directement utiliser la fonction himportetexte vers le serveur mais c'est tellement lent que j'ai abandonné.

Depuis j'importe les fichiers texte en local (c'est immédiat pour 4 tables)
puis je copie les données sur le serveur, et cela prend des dizaines de minutes

J'espère une solution car cela m'occupe et me préoccupe depuis presque 3 jours

Merci

Alain
Membre enregistré
3 898 messages
Popularité : +227 (347 votes)
Posté le 04 mars 2021 - 10:41
Bonjour,

Une boucle, en langage interprété, c'est toujours très long. En passant par une sous requête ça ira déjà plus vide
Un :
INSERT INTO SD_Faciales
SELECT *
FROM
SELECT * FROM Faciales
WHERE FAC_Pays = '" + vPays + "'

devrait faire l'affaire

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
65 messages
Posté le 04 mars 2021 - 12:16
Bonjour Voroltinquo,

Merci pour ce code que je vais essayer de suite.

Depuis j'ai envoyé le projet en Europe pour le tester, et là-bas aucun problème, c'est très rapide.

Sachant que j'ai la fibre, que j'ai une tres bonne connexion en download ET en upload, se pourrait il que ce soit mon provider qui ralentisse un port ?

Merci

Alain
Membre enregistré
65 messages
Posté le 04 mars 2021 - 12:32
Toujours 442 sec pour :

gRequeteSQL = "INSERT INTO CS_Faciales SELECT * FROM (SELECT * FROM Faciales WHERE FAC_Pays = '" + vPays + "')"

Je pense à un souci soit sur mon poste, soit le routeur qui freine l'envoi

C'est la première fois que je suis confronté à un tel problème ^^
Membre enregistré
65 messages
Posté le 04 mars 2021 - 18:15
Le problème n'est pas résolu, et cela reste un mystère. Mais comme cela fonctionne ailleurs, cela ne vient pas du code, et donc je ferme la discussion.

Merci pour votre aide.

Alain
Membre enregistré
940 messages
Popularité : +66 (68 votes)
Posté le 04 mars 2021 - 18:36
Alain a écrit :
Toujours 442 sec pour :

gRequeteSQL = "INSERT INTO CS_Faciales SELECT * FROM (SELECT * FROM Faciales WHERE FAC_Pays = '" + vPays + "')"

Je pense à un souci soit sur mon poste, soit le routeur qui freine l'envoi

C'est la première fois que je suis confronté à un tel problème ^^


bonsoir Alain,

vous dites 'Routeur' ?? votre base HFSQL est sur votre poste et votre base HFSQL C/S est sur un site distant ?

vous pouvez également faire un test, en effectuant votre requête SELECT . Parcourir votre résultat ( fonctions HLit ou POUR TOUT ) , au fur à mesure que vous parcourez vous construisez une chaine qui correspondra à la requête d'insertion 'globale'.

Une fois le parcours terminé, vous exécuté la requête d'insertion sur votre base HFSQL C/S.

A tester....

bon dèv
Posté le 22 décembre 2023 - 00:03
J'ai le même problème aide nous à résoudre le temps d'envoi au serveur
Membre enregistré
1 299 messages
Popularité : +20 (72 votes)
Posté le 22 décembre 2023 - 12:29
Bonjour

en fait a chaque ecriture, il cree les indexe d ou la lenteur

plutot que le hajoute, utilise le hecrit et ensuite tu reindex

--
Bertin CARRIERE
SRL RGPD.Zen-Project.be
support@zen-project.be
www.zen-project.be www.linkedin.com/in/bertincarriere

+32(0)498/10.18.58
Co-President de l'asbl Be-Dev Association des développeurs Windev de Belgique
www.be-dev.be