如何根据解释计划输出创建优化程序提示?

时间:2016-02-25 13:53:49

标签: oracle optimization sql-execution-plan

有没有办法使用explain plan输出为该执行路径生成一整套优化器提示?或者,更准确地说,有没有办法稍微调整执行路径,而无需从头开始编写完整的提示?

背景
我是一名数据分析师,试图在Oracle(11g)上了解有关复杂SQL查询的性能调优的更多信息。因此,我习惯于阅读解释计划,以便在我的查询中找到缺陷。为了解决这些缺陷,我只能调整我的查询,因为我没有权限改变我正在使用的表上的索引。我开始使用的东西之一,并且知之甚少,是优化器提示。当我给优化器提示改变执行路径时(例如,使用降序而不是默认的升序),它就会真正做到这一点,丢弃诸如循环和缓冲排序(或者它做的任何事情)之类的事情。计划的其他部分。为了防止这种情况,我将不得不写一整套提示,我想要的第一个完整的提示将是解释计划。我希望有一种快速的方法可以稍微改变一下这个计划并告诉我的查询。

1 个答案:

答案 0 :(得分:2)

要回答第一部分,一旦通过EXPLAIN PLAN FOR SELECT ....生成计划,您可以使用以下内容查看将保留该计划的完整提示集。

select * from table(dbms_xplan.display(null, null, 'OUTLINE'));

但是,如果你调整这些提示,你就冒着给它提供相互矛盾的指示的风险。

相关问题