2010-11-29 5 views
1

Я создал SQL Tuning задачу для некоторого запроса и выполняется it.After генерации отчета, он рекомендует мне выполнить следующую команду:SQL Tuning Advisor (принимающий профиль)

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

Но! Конечно, я хочу знать, что делает этот профиль ?! и после поиска на этот вопрос в Интернете, я нашел следующий запрос:

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 

И результат этого запроса следующее:

alt text

Я не понимаю, что он делает: (А также я хочу, чтобы преобразовать эту анкету намеки в более читаемом (/ + намекает /) SQL намеков?

ответ

0

Основываясь на странице 24 этого PDF он выглядит как эти подсказки м в то же время говоря оптимизатору корректировать оценки мощности для разных объектов. ПОЧЕМУ профайлер делает это, я не уверен; может быть, статистика плохая или, может быть, она делает фальшивую статистику, чтобы заставить лучший план? Но, возможно, лучший способ понять профиль - сравнить план объяснения до и после.

1

Да, вы видели эти намеки.

Они будут вынуждены использоваться, когда оптимизатор oracle анализирует этот SQL. Таким образом, на сгенерированный план выполнения влияют эти подсказки.

Если вы хотите использовать похожие подсказки в вашем SQL, вам просто нужно просто скопировать их в вас SQL, где следует SELECT, прокомментированный/+ /. Имейте в виду имена блоков запросов, они будут изменены в разных SQL.

Вот полный список подсказок Oracle SQL для вашей справки.

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

Надеется, что это помогает