sql Developer 中的自动跟踪

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)

Kri*_*ice 5

没有比汤姆·凯特更好的解释了……

autotrace 中的计划是一个解释计划。

没有关于硬解析和优化的统计数据 - 不确定你要做什么,但优化器会估计基数,而这些基数又会与其他统计数据(如索引的聚类因子、表中的块等)一起得出 IO 估计。

然而,执行语句后报告的自动跟踪统计信息是事实,不是猜测,不是优化的一部分。

因此,autotrace 使用解释计划来显示可能会使用的计划,并且 autotrace 显示执行查询所消耗的实际资源数量。

完整且长的线程在这里:https://asktom.oracle.com/pls/asktom/asktom.search ?tag=difference-of-explain-plan-autotrace-and-tkprof