OVH Cloud OVH Cloud

WD 11 - préversion

7 réponses
Avatar
I.G.LOG
Elle est bien bonne !

Voilà plus d'un an que j'essaie de retrouver des performances "acceptables"
(lors du passage 5.5 vers 8, mon appli a vue ses temps de réponse
multipliées parfois jusqu'à 20 !!!)
Là je teste la migration d'un projet qui marche sous WD10 en version WD11
(pré-version). Pas tout essayé, mais voilà un premier constat: une requète
de lecture et projet "figé" !!!!!
Voici un exemple de requète qui "bloque" :

lCond = "select SOLDE,NUMDEVGEN,DATE" +...
" from DOCUM,T_DONNC as EMETTEUR, T_DONNC as DESTINATAIRE" +...
" where DOCUM.SOLDE > 0" +...
" and EMETTEUR.ID_LIGNE = DOCUM.IDDOCUM" +...
" and DESTINATAIRE.ID_LIGNE = DOCUM.IDDOCUM" +...
" and EMETTEUR.ID_COL = " + gTabDynD:mGetIDDyn("PT_EMETTEUR")
+...
" and EMETTEUR._VALEUR = " + gSociete:IDENT +...
" and DESTINATAIRE.ID_COL = " +
gTabDynD:mGetIDDyn("PT_DESTINATAIRE") +...
" and DESTINATAIRE._VALEUR = " + pIdTiers
Info(lCond) // ok
SI SQLExec(lCond,"ReqE") ALORS // Plante sous WD11
TANTQUE SQLFetch("ReqE") = 0
...
FIN
FIN
SQLFerme("ReqE")

Est-ce que ca vient des alias ? je ne sais pas je vais tester si je trouve
le temps, parce que là, dans l'immédiat, faut que j'avance; alors retour
WD10 !!!
Avez vous fait des essais concluants sous WD11 ?
Merci de vos réponses

PS: la pré-version n'a pas les performances de la version finale ! mais
quand même !!!

7 réponses

Avatar
//
I.G.LOG a couché sur son écran :

Elle est bien bonne !



Une autre qui est bonne:

Les fonctions "domo" sont tellement super, qu'effectivement elles
allument une lampe mais faut pas en demander plus.

Rien au niveau de la synchro de l'heure entre PC et CM11, rien pour
envoyer ou recevoir des macros vers/depuis le CM11... (Et une fonction
primaire du CM11 est quand même d'être autonome une fois les
macros-user envoyées!)

Bref, une nouvelle fois beaucoup de pub pour un truc mal implémenté.
Avatar
Francis DUHAUT
> Les fonctions "domo" sont tellement super, qu'effectivement elles allument
une lampe mais faut pas en demander plus.


Ca fait chérot l'halogène....:))

"//" a écrit dans le message de news:

I.G.LOG a couché sur son écran :

Elle est bien bonne !



Une autre qui est bonne:

Les fonctions "domo" sont tellement super, qu'effectivement elles allument
une lampe mais faut pas en demander plus.

Rien au niveau de la synchro de l'heure entre PC et CM11, rien pour
envoyer ou recevoir des macros vers/depuis le CM11... (Et une fonction
primaire du CM11 est quand même d'être autonome une fois les macros-user
envoyées!)

Bref, une nouvelle fois beaucoup de pub pour un truc mal implémenté.




Avatar
Stéphane Miqueu
I.G.LOG avait soumis l'idée :
Elle est bien bonne !

Voilà plus d'un an que j'essaie de retrouver des performances "acceptables"
(lors du passage 5.5 vers 8, mon appli a vue ses temps de réponse
multipliées parfois jusqu'à 20 !!!)
Là je teste la migration d'un projet qui marche sous WD10 en version WD11
(pré-version). Pas tout essayé, mais voilà un premier constat: une requète
de lecture et projet "figé" !!!!!
Voici un exemple de requète qui "bloque" :

lCond = "select SOLDE,NUMDEVGEN,DATE" +...
" from DOCUM,T_DONNC as EMETTEUR, T_DONNC as DESTINATAIRE" +...
" where DOCUM.SOLDE > 0" +...
" and EMETTEUR.ID_LIGNE = DOCUM.IDDOCUM" +...
" and DESTINATAIRE.ID_LIGNE = DOCUM.IDDOCUM" +...
" and EMETTEUR.ID_COL = " + gTabDynD:mGetIDDyn("PT_EMETTEUR")
+...
" and EMETTEUR._VALEUR = " + gSociete:IDENT +...
" and DESTINATAIRE.ID_COL = " +
gTabDynD:mGetIDDyn("PT_DESTINATAIRE") +...
" and DESTINATAIRE._VALEUR = " + pIdTiers
Info(lCond) // ok
SI SQLExec(lCond,"ReqE") ALORS // Plante sous WD11
TANTQUE SQLFetch("ReqE") = 0
...
FIN
FIN
SQLFerme("ReqE")

Est-ce que ca vient des alias ? je ne sais pas je vais tester si je trouve
le temps, parce que là, dans l'immédiat, faut que j'avance; alors retour
WD10 !!!
Avez vous fait des essais concluants sous WD11 ?
Merci de vos réponses

PS: la pré-version n'a pas les performances de la version finale ! mais
quand même !!!



Bonjour,
Et en utilisant les jointures ? Ça donne quoi ?

--
Ami Calmant
Stéphane
Avatar
I.G.LOG
> Bonjour,
Et en utilisant les jointures ? Ça donne quoi ?

--
Ami Calmant
Stéphane




Bonsoir,
Je ne vois pas comment utiliser les jointures pour que ca règle le probleme:
la requete doit accéder à la même table selon 2 conditions différentes,
voilà pkoi j'utilise les alias. Cett requete fonctionne sous WD10 en tous
cas.

Par exemple:

select SOLDE,NUMDEVGEN,DATE
from DOCUM,T_DONNC as EMETTEUR, T_DONNC as DESTINATAIRE" +...
where DOCUM.SOLDE > 0
and EMETTEUR.IDENT = DOCUM.IDDOCM
and EMETTEUR.VALEUR = "Société"
and DESTINATAIRE.IDENT = DOCUM.IDDOCM
and DESTINATAIRE.VALEUR = "Client"

= sélection d'un document dont l'émetteur est une société et le
destinataire un client (j'abrège)
Avatar
Stéphane Miqueu
I.G.LOG avait soumis l'idée :
Bonjour,
Et en utilisant les jointures ? Ça donne quoi ?

--
Ami Calmant
Stéphane




Bonsoir,
Je ne vois pas comment utiliser les jointures pour que ca règle le probleme:
la requete doit accéder à la même table selon 2 conditions différentes,
voilà pkoi j'utilise les alias. Cett requete fonctionne sous WD10 en tous
cas.

Par exemple:

select SOLDE,NUMDEVGEN,DATE
from DOCUM,T_DONNC as EMETTEUR, T_DONNC as DESTINATAIRE" +...
where DOCUM.SOLDE > 0
and EMETTEUR.IDENT = DOCUM.IDDOCM
and EMETTEUR.VALEUR = "Société"
and DESTINATAIRE.IDENT = DOCUM.IDDOCM
and DESTINATAIRE.VALEUR = "Client"

= sélection d'un document dont l'émetteur est une société et le
destinataire un client (j'abrège)



Bonjour,

J'utilise des instructions du style :
select SOLDE, NUMDEVGEN, DATE
from DOCUM
inner join T_DONNC EMETTEUR on EMETTEUR.IDENT = DOCUM.IDDOCM AND
EMETTEUR.VALEUR = "Société"
inner join T_DONNC DESTINATAIRE on DESTINATAIRE.IDENT = DOCUM.IDDOCM
AND DESTINATAIRE.VALEUR = "Client"
where DOCUM.SOLDE > 0

en mettant les bons ordres de jointure (INNER, LEFT, ...) en focntion
de ce que tu veux, ça fonctionne nickel.

--
Ami Calmant
Stéphane
Avatar
I.G.LOG
> J'utilise des instructions du style :
select SOLDE, NUMDEVGEN, DATE
from DOCUM
inner join T_DONNC EMETTEUR on EMETTEUR.IDENT = DOCUM.IDDOCM AND
EMETTEUR.VALEUR = "Société"
inner join T_DONNC DESTINATAIRE on DESTINATAIRE.IDENT = DOCUM.IDDOCM
AND DESTINATAIRE.VALEUR = "Client"
where DOCUM.SOLDE > 0

en mettant les bons ordres de jointure (INNER, LEFT, ...) en focntion
de ce que tu veux, ça fonctionne nickel.



Bonjour,
Je vais faire l'essai et je te tiens au courrant du résultat...
Mais (une fois encore) ca va faire beaucoup de boulot pour modifier toutes
les requètes (si ca fonctionne avec inner join et pas avec jointure directe
et alias)
En tous cas merci de t'être intéressé au problème
Avatar
mat
I.G.LOG wrote:
...
Mais (une fois encore) ca va faire beaucoup de boulot pour modifier toutes
les requètes (si ca fonctionne avec inner join et pas avec jointure directe
et alias)


...


j'y suis passé par là avec la version 8 et ce n'est pas gaie. J'ai
réussi à tout faire fonctionner dont j'avais besoin jusqu'au moment de
l'arrivée de WD9 avec laquelle un nombre de requêtes (p.ex.
sous-requêtes imbriquées) ne fonctionnait plus.

Les Alias il faut de toute façon les laisser au moment qu'on attaque
plusieurs fois le même fichier sinon la requête ne marche pas.

Je ne sais pas si sous WD10 c'est toujours valable, mais auparavant une
condition de sélection dans un fichier lié, dont la valeur n'est pas
inclue dans le résultat, ralentissait moins à travers une sous-requête
qu'avec une jointure. Pour des requêtes ayant un résultat à partir de
quelques centaines de lignes, couper une requête en plusieurs est
souvent plus rapide qu'une seule requête complexe (sous condition qu'on
essaye pas d'enchaîner les requêtes dans l'éditeur: ça ramait; donc
utiliser des sous-requêtes ou sources de données pour stocker les
résultats intermédiaires). Relisant cette dernière phrase on voit qu'il
n'y a pas de solution miracle! :-)

Salutations
Mat