|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Lenteur Pour Tout / hlitpremier |
Débuté par Anthony, 16 aoû. 2016 21:13 - 9 réponses |
| |
| | | |
|
| |
Posté le 16 août 2016 - 21:13 |
Bon après-midi, j'éprouve présentement des lenteurs avec l'instruction Pour tout / hlitpremier. J'ai testé les deux et même avec l'option "hsansrafraichir" ou parcours sur clé, ça prend 500ms seulement pour cet instruction.
Est-ce normal? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 569 messages Popularité : +222 (260 votes) |
|
Posté le 17 août 2016 - 10:15 |
Bonjour,
Pour pouvoir t'aider il nous faudrait un peu plus d'informations sur le type de base que tu utilises et le code que tu as mis en place.
-- Cordialement,
Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 148 messages Popularité : +4 (14 votes) |
|
Posté le 17 août 2016 - 11:54 |
| |
| |
| | | |
|
| | |
| |
Posté le 18 août 2016 - 17:37 |
Bonjour, pour le code sql, voici:
SELECT MAX(Commande.Date_Liv_Commande_De) AS Commande_Date_Liv_Commande_De, MAX(Waybill.Date_Liv_Reel) AS Waybill_Date_Liv_Reel FROM Commande INNER JOIN Waybill ON Commande.COCLEUNIK = Waybill.COCLEUNIK
Puis le code:
I HExécuteRequête(reqDernDateLiv,hRequêteDéfaut) ALORS SI HLitPremier(reqDernDateLiv,"",hSansRafraîchir) ALORS SI reqDernDateLiv.Waybill_Date_Liv_Reel <= DateDuJour() ALORS SAI_DateMax = reqDernDateLiv.Commande_Date_Liv_Commande_De SINON SAI_DateMax = reqDernDateLiv.Waybill_Date_Liv_Reel FIN FIN FIN |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 569 messages Popularité : +222 (260 votes) |
|
Posté le 18 août 2016 - 20:58 |
Bonjour,
Sur quelle base tu travailles ?
Essayes de retirer les doubles quotes dans le hlitpremier et met
HLitPremier(reqDernDateLiv,hSansRafraîchir)
Moi je l'utilise comme tu et ça fonctionne super bien.
-- Cordialement,
Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 148 messages Popularité : +4 (14 votes) |
|
Posté le 19 août 2016 - 10:17 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 257 messages Popularité : +35 (37 votes) |
|
Posté le 19 août 2016 - 11:52 |
Perso ma syntaxe favorite est :
SI HExécuteRequête(reqDernDateLiv,hRequêteDéfaut) ALORS HLitPremier(reqDernDateLiv) SI PAS HEnDehors(reqDernDateLiv) ALORS SELON reqDernDateLiv.Waybill_Date_Liv_Reel CAS DateDuJour() : SAI_DateMax = reqDernDateLiv.Commande_Date_Liv_Commande_De AUTRE CAS : SAI_DateMax = reqDernDateLiv.Waybill_Date_Liv_Reel FIN SINON FIN SINON FIN
-- Baptiste CLOART Consultant b.cloart@blv-tech.com 06.88.74.80.65 www.linkedin.com/in/cloart www.blv-tech.com |
| |
| |
| | | |
|
| | |
| |
Posté le 19 août 2016 - 11:56 |
Le 18/08/2016 à 15:37, Anthony a écrit :
Bonjour, pour le code sql, voici: SELECT MAX(Commande.Date_Liv_Commande_De) AS Commande_Date_Liv_Commande_De, MAX(Waybill.Date_Liv_Reel) AS Waybill_Date_Liv_Reel FROM Commande INNER JOIN Waybill ON Commande.COCLEUNIK = Waybill.COCLEUNIK Puis le code: I HExécuteRequête(reqDernDateLiv,hRequêteDéfaut) ALORS SI HLitPremier(reqDernDateLiv,"",hSansRafraîchir) ALORS SI reqDernDateLiv.Waybill_Date_Liv_Reel <= DateDuJour() ALORS SAI_DateMax = reqDernDateLiv.Commande_Date_Liv_Commande_De SINON SAI_DateMax = reqDernDateLiv.Waybill_Date_Liv_Reel FIN FIN FIN
Bonjour,
En fait, c'est normal, le hexecuteRequete travaille dans un thread secondaire, il rends la main instantanément. Par contre, pour que le hlitpremier "fonctionne" il faut que la requête soit traitée, on attends donc la fin du thread secondaire.
En théorie, si tu teste ta requête sql dans le wdsql, elle devrait prendre environ 500ms.
J'avais constaté ce phénomène entre wd10 et wd12 (de mémoire en wD10, le hexecuterequete n'était pas dans un thread et rendait la main une fois la requête traitée)
Bon dev,
Fred |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 148 messages Popularité : +4 (14 votes) |
|
Posté le 19 août 2016 - 12:07 |
Bonjour Baptiste
CAS DateDuJour() : SAI_DateMax = reqDernDateLiv.Commande_Date_Liv_Commande_De AUTRE CAS : SAI_DateMax = reqDernDateLiv.Waybill_Date_Liv_Reel
A mon avis ça ne change rien au niveau de la vitesse...
-- FETOUI MOHAMED Développeur, Consultant et Formateur WinDev, WebDev et WinDev Mobile fib.fetouimed@gmail.com https://www.linkedin.com/pub/mohamed-el-fetoui/a0/680/109 MAROC+212(0)661249774 Membre de http://www.be-dev.be Skype : FETOUI MOHAMED |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 344 messages Popularité : +24 (28 votes) |
|
Posté le 19 août 2016 - 12:38 |
Bonjour
On ne sait pas qu'elle est la taille de la base quel type de base HF/cs ou HF classique On ne sait pas la mémoire du serveur en cas de HF/CS On ne sait pas la structure des tables ; On la devine On ne sait pas si c'est seulement cette requête qui est lente et quelle est la durée que le traitement de
Hexecuterequetereq(DernDateLiv,hRequêteDéfaut)
question as tu utilisé l'outil Explain dans le centre de contrôle HFCS qui indique les optimisations de la requête si cela est nécessaire. Il faut utiliser la commande
AnalyseurDébut() HExécuteRequête(reqDernDateLiv,hRequêteDéfaut) pour TOUT reqDernDateLiv, SELON reqDernDateLiv.Waybill_Date_Liv_Reel CAS DateDuJour() : SAI_DateMax = reqDernDateLiv.Commande_Date_Liv_Commande_De AUTRE CAS : SAI_DateMax = reqDernDateLiv.Waybill_Date_Liv_Reel FIN FIN AnalyseurFin() Qui va t'indiquer le temps de chaque traitement
-- Utiliser l'aide avant que l'on vous aide Bon développement Alain PETTITI (apettiti.cg06.fr) Avec licence PCSOFT certifiée et abonnement LST Je peux prendre la main avec teamwiever Apprentissage Windev : http://apprentissagewindev.blogspot.fr |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|