Советник по настройке Sql (принимает профиль) - PullRequest
1 голос
/ 29 ноября 2010

Я создал задачу настройки sql для некоторого запроса и выполнил ее. После генерации отчета рекомендуется выполнить следующую команду:

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 подсказки?

Ответы [ 2 ]

1 голос
/ 11 октября 2017

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

Они будут принудительно использоваться, когда оптимизатор 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

Надеюсь, это поможет

0 голосов
/ 30 ноября 2010

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

...