oracle - 如何根据解释计划输出创建优化器提示?

标签 oracle optimization sql-execution-plan

有没有办法使用解释计划输出来生成该执行路径的全套优化器提示?或者,更准确地说,有没有一种方法可以稍微调整执行路径,而无需从头开始编写全套提示?

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

最佳答案

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

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

但是,如果您调整这些提示,您确实会面临给出相互冲突的指令的风险。

关于oracle - 如何根据解释计划输出创建优化器提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35629264/

相关文章:

java - 线程 "main"javax.naming.NoInitialContextException : Cannot instantiate class 中出现异常

.net - .NET 项目的 Oracle 与 SQL Server

algorithm - worker 和任务数量不等的匈牙利算法

MySQL Innodb 由于行估计极其错误而无法使用索引

sql - 当我添加 LIMIT 1 时,使用 ORDER BY 的查询速度是原来的 13 倍

sql - 用select子句在oracle中编写一个返回id的插入语句

Oracle ODP.net 托管驱动程序与非托管驱动程序

css - 查找未使用的 css

django - 内存数据库性能问题中的 PostgreSQL

sql - 为什么这个sql查询要进行键查找?