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 !!!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
//
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é.
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é.
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é.
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é.
> 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....:))
"//" <none@none.com> a écrit dans le message de news:
mn.94a07d6c860d5f10.65809@none.com...
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é.
> 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é.
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
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 ?
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
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)
> 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, 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)
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
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.
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
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
> 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
> 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
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
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! :-)
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! :-)