|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Consultant en Business Intelligence Inscription : avril 2011 Messages : 7 ![]() |
Bonjour,
Je souhaite calculer la quantité des composants achetés pour la production de mon produit finale. On a trouvé une solution qui ne fonctionne que sur des petits volumes de données, donc dans l'exemple ci-dessous pas de soucis. Mais sur des volumes plus importants, nous avons des problèmes de performances qui proviennent de l'utilisation de la fonction. Sur notre jeu de données de test, avec fonction 15 min, sans fonction quasi-immédiat. Avez-vous des pistes pour réaliser ce calcul de manière plus performante? Merci pour votre aide. Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
Il pourrait être intéressant de créer ta propre fonction d'aggregation pour le calcul d'un produit :
http://download.oracle.com/docs/cd/B...5/dci11agg.htm |
|
10
|
|
|
#3 | ||
|
Membre éprouvé
![]() |
La fonction d'aggrégat est effectivement une piste intéressante.
Tu peux aussi essayer la solution suivante qui évite d'avoir une requête différente à chaque appel, ce qui provoque un PARSE à chaque fois : Code :
A voir quel gain en temps de traitement ça donne, mais ça peut être intéressant. |
||
|
|
10
|
|
|
#4 |
|
Invité de passage
![]() Consultant en Business Intelligence Inscription : avril 2011 Messages : 7 ![]() |
Merci pour la piste.
Mais après lecture du site, j'ai l'impression que créée ma propre fonction d’agrégat ne répond pas à mon problème. L'idée serait plutôt de faire le calcul au fil des itération mais je pense pas que ce soit possible. Sinon il faudrait ne pas à avoir à "parser" ma chaîne de caractères dans la fonction. Des nouvelles idées? |
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() |
La modification de fonction que j'ai proposée ne donne aucun gain en temps d'exécution ?
|
|
|
00
|
|
|
#6 | ||
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
Je pense que la durée dépends plus de la hyérarchisation que de l'aggrégation. Sans la fonction, combien de temps dure le code suivant par rapport à la globalité de la requête ? :
Code :
|
||
|
00
|
|
|
#7 | |||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Citation:
Regarde cette discussion pour différentes méthodes de produit cummulé Et en utilisant le cumulativeproduct de mnitu : Code :
|
|||
|
|
10
|
|
|
#8 | ||
|
Invité de passage
![]() Consultant en Business Intelligence Inscription : avril 2011 Messages : 7 ![]() |
Merci pour vos nombreux retours!
Je suis en train d'essayer les solutions fournies mais je rencontre des petits soucis. Ma version d'Oracle: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi PL/SQL Release 10.2.0.4.0 - Production CORE 10.2.0.4.0 Production TNS for HPUX: Version 10.2.0.4.0 - Production NLSRTL Version 10.2.0.4.0 - Production Regarder ci-dessous les requêtes et résultats associés... Vous avez déjà rencontré ce comportement étrange? Code :
|
||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Consultant en Business Intelligence Inscription : avril 2011 Messages : 7 ![]() |
Précision:
Si je remplace la fonction analytique fournie par un simple Sum(), j'ai le même comportement... |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
C'est peut être un problème avec le WITH, moi j'avais créé la table.
Qu'est ce que ça donne sur les vraies données ? |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Consultant en Business Intelligence Inscription : avril 2011 Messages : 7 ![]() |
|
|
|
00
|
|
|
#12 | ||||
|
Invité de passage
![]() Consultant en Business Intelligence Inscription : avril 2011 Messages : 7 ![]() |
Désolé la communauté...
Mais je reviens à la charge avec mon problème. En fait j'ai l'impression que même avec la fonction analytique prodcumule, je ne pourrai pas arrivé au résultat voulu avec un jeu de donnés plus complexes. En fait, mon premier exemple était un peu trop simplifié. Ci-dessous vous en trouverez un autre avec un niveau supplémentaire de complexité. Code :
Code :
Merci d'avance pour votre aide qui m'a déjà été bien utile! ![]() Mars |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com