我为某些查询创建了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
此查询的结果如下:
我不明白它做了什么:(而且我想将此配置文件提示转换为更易读(/ +提示 /)sql提示?
答案 0 :(得分: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
希望这有帮助
答案 1 :(得分:0)
根据此PDF的第24页,看起来这些提示主要是告诉优化器调整不同对象的基数估计值。为什么探查者这样做我不确定;也许统计数据很糟糕,或者可能正在制作假统计数据以强制推行更好的计划?但也许更好的理解配置文件的方法是比较前后的解释计划。