在阅读Oracle SQL调优指南时,我看到了这样一句话(您可以在这个第二章中找到它):
计划生成器通过尝试不同的访问路径、连接方法和连接顺序来探索查询块的各种计划。 许多计划是可能的,因为数据库可以使用各种组合来产生相同的结果。优化器以最低的成本选择计划。 图4-2优化器组件

是否有可能以某种方式使所有由计划生成器生成的?
也许有标准的PL/SQL包可用于此或系统视图?
发布于 2018-11-13 21:24:27
通常,您不需要看到所有可能的计划,但是在某些情况下有一个有趣的问题,为什么甲骨文放弃某些计划而使用替代的计划。
要回答这个问题,理想的条目是甲骨文产生的10053跟踪。
有一篇关于这个主题的经典论文,来自沃尔夫冈·布莱特林,可以找到这里。
此外,乔纳森刘易斯在他的基于成本基础的Oracle基础在第14章,10053跟踪到这个主题。
谷歌肯定会提供其他参考资料。
一句警告。在Oracle上下文中,10053不是最简单的东西。同样,在每个版本中,您可能期望输出发生变化。学习的一个好起点是研究在两个不同环境中生成不同执行计划的查询。简单地获取两个数据库中的10053跟踪,并创建一个文件差异并观察差异。您将看到,如果在优化器参数、对象或系统统计数据方面存在差异,以及这些更改如何影响最终执行计划的选择。
https://stackoverflow.com/questions/53239892
复制相似问题