有没有办法使用解释计划输出来生成该执行路径的全套优化器提示?或者,更准确地说,有没有一种方法可以稍微调整执行路径,而无需从头开始编写全套提示?
背景
我是一名数据分析师,试图了解有关 Oracle (11g) 上复杂 SQL 查询的性能调优的更多信息。因此,我习惯于阅读解释计划来查找查询中的缺陷。为了修复这些缺陷,我只能调整查询,因为我无权更改我正在使用的表上的索引。我开始使用但知之甚少的东西之一是优化器提示。当我提示优化器更改执行路径(例如,使用降序而不是默认的升序)时,它实际上会这样做,丢弃循环法和缓冲区排序(或它所做的任何事情)之类的东西计划的其他部分。为了防止这种情况,我必须编写一整套提示,而我首先要查找的全套提示将是解释计划。我希望有一种快速方法可以稍微改变这个计划并告诉我的查询遵循它。
最佳答案
为了回答第一部分,一旦您通过 EXPLAIN PLAN FOR SELECT.... 生成了计划,您可以使用以下内容来查看保留该计划的完整提示集。
select * from table(dbms_xplan.display(null, null, 'OUTLINE'));
但是,如果您调整这些提示,您确实会面临给出相互冲突的指令的风险。
关于oracle - 如何根据解释计划输出创建优化器提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35629264/