1

我为一些查询创建了 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提示?

4

2 回答 2

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

希望这可以帮助

于 2017-10-11T05:44:45.987 回答
0

根据本PDF的第 24 页,这些提示似乎主要是在告诉优化器调整不同对象的基数估计。为什么探查器这样做我不确定;也许统计数据不好,或者它正在制作虚假统计数据以强制制定更好的计划?但也许更好的理解配置文件的方法是比较之前和之后的解释计划。

于 2010-11-30T06:49:22.200 回答