我通常在 sqlplus 中使用以下内容生成解释计划:
SET AUTOTRACE ON
SET TIMING ON
SET TRIMSPOOL ON
SET LINES 200
SPOOL filename.txt
SET AUTOTRACE TRACEONLY;
{query goes here}
SPOOL OFF
SET AUTOTRACE OFF
但是如果我想为存储过程生成解释计划怎么办?
有没有办法为整个存储过程生成解释计划? SP 没有输入/输出参数。
最佳答案
您生成的内容正确地称为“执行计划”。 “Explain plan”是一个用于生成和查看执行计划的命令,就像示例中的 AUTOTRACE TRACEONLY 所做的那样。
根据定义,执行计划是针对单个 SQL 语句的。 PL/SQL block 没有执行计划。如果它包含一个或多个 SQL 语句,那么每个语句都会有一个执行计划。
一种选择是手动从 PL/SQL 代码中提取 SQL 语句并使用您已经展示的过程。
另一个选项是激活 SQL 跟踪,然后运行该过程。这将在服务器上生成一个跟踪文件,其中包含 session 中执行的所有语句的执行计划。跟踪是相当原始的形式,因此通常最容易使用 Oracle 的 TKPROF 工具对其进行格式化;还有各种第三方工具也可以处理这些跟踪文件。
关于oracle - 如何为整个存储过程生成解释计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4510491/