Avr*_*jit 5 sql oracle oracle-sqldeveloper
SQL Developer 中 EXPLAIN PLAN 和 AUTOTRACE 之间的基本区别是什么。有人可以详细说明吗?
这是我试图找出 Autotrace 和 Explain Plan 之间差异的查询。
SELECT name, address, latest_in
FROM ( SELECT name, address, latest_in
ROW_NUMBER() OVER (PARTITION BY name ORDER BY address DESC) AS rowrank
FROM avrajit
)
WHERE rowrank <> 1 AND rowrank > 3;
Run Code Online (Sandbox Code Playgroud)
没有比汤姆·凯特更好的解释了……
autotrace 中的计划是一个解释计划。
没有关于硬解析和优化的统计数据 - 不确定你要做什么,但优化器会估计基数,而这些基数又会与其他统计数据(如索引的聚类因子、表中的块等)一起得出 IO 估计。
然而,执行语句后报告的自动跟踪统计信息是事实,不是猜测,不是优化的一部分。
因此,autotrace 使用解释计划来显示可能会使用的计划,并且 autotrace 显示执行查询所消耗的实际资源数量。