2010-11-29 16 views
1

J'ai créé tâche tuning SQL pour une requête et exécutée it.After génération de rapports, il me recommande d'exécuter la commande suivante:conseiller tuning Sql (profil accepter)

execute dbms_sqltune.accept_sql_profile(task_name => 'tuning_task_name', 
             replace => TRUE); 

Mais! Bien sûr, je veux savoir ce que fait ce profil ?! et après avoir cherché cette question sur Internet, j'ai trouvé la requête suivante:

select 
    rat.attr1 
from 
    sys.WRI$_ADV_TASKS tsk, 
    sys.WRI$_ADV_RATIONALE rat 
where 
    tsk.name = 'tuning_task_name' 
and rat.task_id = tsk.id 

Et le résultat de cette requête est la suivante:

alt text

Je ne comprends pas ce que fait-il: (Et aussi je veux convertir ces relents de profil dans les plus lisibles (/ + Hint /) conseils sql?

Répondre

0

sur la base de la page 24 de la présente PDF il semble que ces conseils sont m Dire à l'optimiseur d'ajuster les estimations de cardinalité pour différents objets. POURQUOI le profileur fait ceci je ne suis pas sûr; Peut-être que les statistiques sont mauvaises ou peut-être que cela crée de fausses statistiques pour forcer un meilleur plan? Mais peut-être une meilleure façon de comprendre le profil est de comparer le plan d'explication avant et après.

1

Oui, vous avez vu ces conseils de contour.

Ils seront forcés à être utilisés lorsque Oracle Optimizer analysera ce SQL. Par conséquent, le plan d'exécution généré est affecté par ces conseils.

Si vous souhaitez utiliser des indications similaires dans votre SQL, il suffit de les copier dans votre SQL où SELECT, commenté par/+ /. Soyez conscient des noms des blocs de requête, ils seront modifiés dans différents SQL.

Voici une liste complète de conseils SQL Oracle pour votre référence.

http://www.hellodba.com/reader.php?ID=208&lang=EN http://www.hellodba.com/reader.php?ID=220&lang=EN

Hope this helps