Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何获得详细的解释计划?_Database_Oracle_Performance_Sql Execution Plan - Fatal编程技术网

Database 如何获得详细的解释计划?

Database 如何获得详细的解释计划?,database,oracle,performance,sql-execution-plan,Database,Oracle,Performance,Sql Execution Plan,我过去在management studio工作过,记得解释/查询计划是描述性的,就像它过去所说的那样 1) 激发语句的顺序 2) 每个语句返回的行数 我正在使用OracleSQL开发人员的“解释计划”,但我没有看到上述功能。还有其他好的免费工具吗? 激发语句的顺序 已创建“”以扩展DBMS_XPLAN的输出,以包括步骤的执行顺序。下面的输出显示了默认输出与Adrian的XPlan实用程序生成的输出之间的差异 比如说, EXPLAIN PLAN FOR SELECT * FROM emp e,

我过去在management studio工作过,记得解释/查询计划是描述性的,就像它过去所说的那样

1) 激发语句的顺序

2) 每个语句返回的行数

我正在使用OracleSQL开发人员的“解释计划”,但我没有看到上述功能。还有其他好的免费工具吗?

激发语句的顺序

已创建“”以扩展DBMS_XPLAN的输出,以包括步骤的执行顺序。下面的输出显示了默认输出与Adrian的XPlan实用程序生成的输出之间的差异

比如说,

EXPLAIN PLAN FOR
SELECT *
FROM   emp e, dept d
WHERE  e.deptno = d.deptno
AND    e.ename  = 'SMITH';

SET LINESIZE 130

-- Default Output
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------
Plan hash value: 3625962092

----------------------------------------------------------------------------------------
| Id  | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |         |     1 |    58 |     3   (0)| 00:00:53 |
|   1 |  NESTED LOOPS                |         |       |       |            |          |
|   2 |   NESTED LOOPS               |         |     1 |    58 |     3   (0)| 00:00:53 |
|*  3 |    TABLE ACCESS FULL         | EMP     |     1 |    38 |     2   (0)| 00:00:35 |
|*  4 |    INDEX UNIQUE SCAN         | PK_DEPT |     1 |       |     0   (0)| 00:00:01 |
|   5 |   TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:18 |
----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter("E"."ENAME"='SMITH')
   4 - access("E"."DEPTNO"="D"."DEPTNO")

18 rows selected.

SQL>
让我们看看扩展计划,看看步骤的顺序。请参见“作战需求文件”列:

-- XPlan Utility output
@xplan.display.sql

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
Plan hash value: 3625962092

----------------------------------------------------------------------------------------------------
| Id  | Pid | Ord | Operation                    | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------
|   0 |     |   6 | SELECT STATEMENT             |             |     1 |    58 |     3   (0)| 00:00:53 |
|   1 |   0 |   5 |  NESTED LOOPS                |             |       |       |            |          |
|   2 |   1 |   3 |   NESTED LOOPS               |             |     1 |    58 |     3   (0)| 00:00:53 |
|*  3 |   2 |   1 |    TABLE ACCESS FULL         | EMP         |     1 |    38 |     2   (0)| 00:00:35 |
|*  4 |   2 |   2 |    INDEX UNIQUE SCAN         | PK_DEPT     |     1 |       |     0   (0)| 00:00:01 |
|   5 |   1 |   4 |   TABLE ACCESS BY INDEX ROWID| DEPT        |     1 |    20 |     1   (0)| 00:00:18 |
----------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter("E"."ENAME"='SMITH')
   4 - access("E"."DEPTNO"="D"."DEPTNO")

About
------
  - XPlan v1.2 by Adrian Billington (http://www.oracle-developer.net)


18 rows selected.

SQL>
每个语句返回的行数

SQL Developer中,解释计划窗口有基数列,该列显示了行数

SQL*Plus中,使用DBMS\u XPLAN可以以可读格式显示。行列显示行数


看。很少有好的例子和用法。

谢谢Lalit。我下载了该实用程序,但不确定如何获取上次执行语句的计划。我尝试的是:-解释Select*from的计划。。。。然后运行带有参数的xplan.display.sql(“PLAN_TABLE”,NULL,“典型”),以获取上次解释的sql语句的计划,当我从sqlplus运行
@xplan.display.sql
时,只需在sql*Plus中执行:
@xplan.display.sql
,它表示错误:无法从计划中获取上次解释的计划_TABLE@emilly你确定吗?因为它对我有用。您是否可以执行SQL(无解释计划),然后运行
@xplan.display.SQL
。如果您仍然面临这个问题,那么检查上一个SQL的
语句\u id
,并将其作为参数传递给脚本。应该有用。如果打开脚本,在顶部有不同使用方法的示例。@Emily脚本是否也与SQL Developer一起工作?我是说,你是作为外部脚本运行的吗?不管怎样,我很高兴你让它工作了。