|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 7 ![]() |
* Bonjour, *
Est-ce qu'il y a un moyen de visualiser tous les plans d'exécution d'une requête donnée et de choisir manuellement celui du moindre coût. Merci. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 520 ![]() |
Tu veux remplacer l'optimiseur ?
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Tu peux utiliser statement_id pour identidfier les plans :
Code :
EXPLAIN PLAN SET statement_id ='identifiant' INTO nom_plan_table FOR requête ; Pour forcer un plan d'exécution il faut utiliser un hint mais le hint ne porte pas sur un plan spécifique mais sur une méthode d'accès, aka forcer un nested loop ou un hash join ou forcer l'utilisation d'index .... Globalement c'est considéré comme une mauvaise pratique car souvent tu veux qu'oracle détermine des plans différents, potentiellement par valeurs recherchées (dans certaines conditions) mais aussi dans le temps lorsque la répartition des données évolues, et ça, c'est le boulot du CBO s'appuyant sur le calcul des statistiques. Puisque tu t'intéresses au COST, regarde l'article Comment l'optimiseur d'Oracle calcule le coût Mais lis également les articles de Wolfgang Breitling (situés en bas de page de l'article de mnitu), pour mieux comprendre l'importance de la colonne CARD et le tuning par calcul de stat. |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() |
Il pourrait être intéressant de connaître la version d'Oracle utilisée car l'optimiseur a pas mal bougé entre la 9i et la 11g.
|
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Ahmed AANGOURDBA Etudes Oracle Inscription : janvier 2010 Messages : 123 ![]() |
Bonjour,
En 11g le SQL Plan Baseline permet justement au DBA d'avoir la main sur les plans appliqués. Si t'es en 10g tu peux utiliser les SQL profiles pour forcer Oracle à utiliser un plan existant. J'ai justement écris un article récemment sur mon blog à ce sujet: http://ahmedaangour.blogspot.com/201...ia-un-sql.html
__________________
Mon blog Oracle: http://ahmedaangour.blogspot.com/ |
|
00
|
|
|
#6 |
|
Membre chevronné
![]() loic Administrateur de base de données Inscription : décembre 2007 Messages : 673 ![]() |
Bonsoir,
il y a aussi les outline qui permettent de forcer le plan d’exécution que l'on veut pour une requête donnée. D'ailleurs les baselines remplacent les outline dans la version 11G. http://www.mhprofessional.com/downlo...90582_ch13.pdf
__________________
========================================== La justice sans la force est impuissante, la force sans la justice est tyrannique... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com