|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Bonjour à tous,
j'ai une table contenant des évènements lesquels ayant une date de fermeture. Il me faut récupérer tous les évènements dont la date de fermeture arrive à échéance la semaine précédent la semaine du jour d'exécution de la requête. Ceux qui ont compris peuvent lever la main ... les autres relisez ma phrase, car j'ai fait un effort ! ![]() Extrait de la requête : Code :
Alors qui saura optimiser ma condition ?!
__________________
Quand on n'a pas d'tête, on a ...
|
||
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Que pensez-vous de ça?
Code :
|
||
|
|
00
|
|
|
#3 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Et de ça ?
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
|
|
00
|
|
|
#4 | |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Citation:
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : mai 2007 Messages : 173 ![]() |
Une autre solution est de créer des index.
Attention l'index doit etre crée sur la fonction TO_CHAR(CAL.CAL_DAT_FER, 'YYYY') et pas simplement sur la colonne CAL.CAL_DAT_FER sinon le SGBD (sur Oracle en tous cas) n'est pas capable d'utiliser l'index. P. |
|
|
00
|
|
|
#6 | |||
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Citation:
Ta méthode : 280 746 (coût) et 10,5 secondes (en moyenne) pour 31 888 résultats. Ma méthode : 14 918 (coût) et 8,2 secondes (en moyenne) pour 31 888 résultats.
__________________
Quand on n'a pas d'tête, on a ...
|
|||
|
|
00
|
|
|
#7 | |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
J'ai beaucoup d'autres conditions dans ma requête et quasiment toutes sur une et unique table. J'ai donc créé un index sur les champs les plus discriminants. La table étant très lourde je suis passé d'un cout de 1.8 * 10^18 à 14 918 !!!
![]() Citation:
Je n'ai jamais créé d'index intégrant une fonction, uniquement sur des champs. De plus, j'utilise Oracle SQL Developer et je crée mes index en mode graphique habituellement et non pas en ligne de commande.
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
|
00
|
|
|
#8 | |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Citation:
Le coût constaté ici par l'optimiseur peut être discutable ! |
|
|
|
00
|
|
|
#9 | |
|
Membre éprouvé
![]() Consultant en Business Intelligence Inscription : mai 2003 Messages : 910 ![]() |
Comme disait pdelorme :
Citation:
__________________
Quand on n'a pas d'tête, on a ...
|
|
|
|
00
|
|
|
#10 | |||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Citation:
Il suffit d'ajouter le test sur la semaine : Code :
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
|||
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
|
|
|
00
|
|
|
#12 | |||
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Citation:
En fin voici un test pour comparer les deux méthodes sans les "conneries" de sysdate en ce qui concerne ma solution Code :
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com