|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 65 ![]() |
Bonjour,
Voici l'explain plan d'une requête : Code :
Au niveau du nombre de ligne par table : DO_LOT_BON : 247092 DO_LOT_ENTETE : 2636 DO_LOT_DOSSIER : 37568 SE_CAS : 18349 INT_IDENT_ROLE : 7246 AS_PRODUIT : 3822 Est-ce que l'ordre de déclaration de la clause FROM peut avoir une incidence sur les performances? Merci d'avance pour vos conseils avisés. Cédric |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Quelle version de base ?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Est-ce que les stats sont à jour, parce qu'un acces full sur dos "serait" peut être mieux.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 65 ![]() |
La base est en version 9.2.0.1, une migration est prévu en 10g mais pas dans l'immédiat.
Les stats sont mis à jour une fois par semaine. |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Pour info, l'install du patchset 9.2.0.6 ou 9.2.0.7 serait déjà un bon début sachant que l'optimizer profite de quelques corrections intéressantes.
|
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Non, cela n'a d'importance qu'en mode RULE, ce qui n'est pas le cas (GOAL: CHOOSE).
|
|
|
00
|
|
|
#7 | ||
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 65 ![]() |
Le schéma étant sur une base de test, j'ai migré en version 9.2.0.8.
Voici le nouveau plan : Code :
Comment puis-je descendre ce temps? Quelqu'un a-t-il une idée? Merci |
||
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
c'est pas suffisant 5s ? Essaye avec le hint FIRST_ROWS pour voir ce que ça donne sans les HASH JOIN.
|
|
|
00
|
|
|
#9 | ||
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 65 ![]() |
Je dois descendre le plus bas possible!
Avec la clause FIRST_ROW : Code :
Il y a une vue principale constitué de deux vues (je suis actuellement en train de vérifier si on ne peut pas mettre les deux vues ensemble). La vue que l'on essaye d'optimiser est un des "composant" de la vue principal. |
||
|
|
00
|
|
|
#10 |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
|
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
|
|
|
00
|
|
|
#12 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Et comment tu arrives à savoir quand une requête ne peut pas être mieux optimisé ? Le plus rapide possible ça n'existe pas... sinon dans 2 mois t'es encore sur ta requête. Il faut absolument déterminer un temps acceptable.
Apparemment avec FIRST_ROWS c'est plus rapide non ? Citation:
|
|
|
|
00
|
|
|
#13 | |||||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Citation:
Voici un exemple : Table FCLIENT et jointure externe sur parametre (PK) Code :
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
|||||
|
|
00
|
|
|
#14 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Je ne vois pas bien à quoi ça sert de optimiser la requête qui va créer la vue.
|
|
|
00
|
|
|
#15 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
Ceci étant, je suis d'accord, une mauvaise requête dans une vue peut être très performantes selon comment on joins la vue lors de son utilisation |
|
|
|
00
|
|
|
#16 |
|
Membre régulier
![]() Inscription : mai 2007 Messages : 173 ![]() |
salut,
d'apres ce que je vois sur ta requette, il est normal que le plan d'execution te retourne un FULL car tu n'a pas de close where filtrante. en effet ta vue contient TOUT les elements de ta table DO_LOT_BON. Donc, il Oracle n'a aucune raison d'utiliser un index (vu que toute les lignes sont retenues). par contre quand tu feras une requette sur ta vue avec une clause Where, le plan d'execution devrais changer pour utiliser l'index qui va bien (en relation avec ta clause where). fait ta vue telle que tu l'a définie dans le premier post. puis requette where DO_LOT_BON.X = z avec un index sur X. ton plan d'execution devrais utiliser l'index et le FULL devrais disparaitre... P. |
|
|
00
|
|
|
#17 | |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Citation:
|
|
|
|
00
|
|
|
#18 | |||||
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Citation:
|
|||||
|
|
00
|
|
|
#19 |
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 65 ![]() |
Déjà merci à tous,
Le temps doit être le plus bas possible car cette vue entre dans processus de calcul. Ce processus actuellement prend 1h pour générer une 100 de facture d'une centaine de ligne ce qui tout simplement innacpetable pour le client. J'ai également lancé une trace Oracle pour voir qu'elles seraient les requêtes qui pourraient poser problème. De là, j'en ai tiré un index qui manquait, malgré cela, c'est toujours trop lent. Donc comme cette vue est lente, j'aimerais l'optimiser pour voir si elle a une influence significative. @Orafrance tu proposes d'utiliser les hints clause tel que "FIRST_ROW" et n'est-il plus supporté par Oracle 10g? |
|
|
00
|
|
|
#20 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com