如何在 Oracle Sql 开发人员中查看解释计划?
How do I view the Explain Plan in Oracle Sql developer?
我有几个 SQL 查询的查询 运行 性能非常低,我想检查此查询的查询执行计划。我正在尝试执行以下查询,但未显示任何查询执行计划。它只显示消息计划 FOR 成功。我不知道我们必须在 oracle sql 开发人员中做任何设置来解释查询计划:
EXPLAIN PLAN FOR
Select SO.P_OPTION_ID FROM
SIMSIM
JOIN P_TYPE PT on PT.KEY=SIM.P_TYPE_KEY JOIN P_CONFIG PC ON PC.ID=PT.PRODUCT_CONFIG_ID
JOIN P_OPTION PO ON PO.OPTION_KEY=PC.DEFAULT_PRODUCT_OPTIONS JOIN S_OPTION SO ON SO.SERVICE_ID=SIM.ASSIGNED_TO_SERVICE_ID
JOIN AVV_NO AN ON SIM.ASSIGNED_ANUMBER_ID = AN.ID
where SO.STATUS_ID IN (20,40)
and SO.ID < to_char(SYSDATE - numtodsinterval ( 1,'MINUTE' ), 'YYYYMMDDHH24MISS')||'0000'
and SO.ID > to_char(SYSDATE - numtodsinterval ( 1, 'HOUR' ), 'YYYYMMDDHH24MISS')||'0000'
and NOT EXISTS(SELECT ID from TEMP_BPL T WHERE T.ID = SO.ID );
EXPLAIN PLAN FOR
在SQL开发者中,您不必使用EXPLAIN PLAN FOR
语句。按 F10
或单击 解释计划图标。
然后将显示在解释计划中window。
如果您使用 SQL*Plus 则使用 DBMS_XPLAN.
例如,
SQL> EXPLAIN PLAN FOR
2 SELECT * FROM DUAL;
Explained.
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 272002086
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected.
SQL>
Explain 仅显示优化器认为查询将如何执行。
要显示真正的计划,您需要 运行 sql 一次。然后使用相同的会话 运行 以下内容:
@yoursql
select * from table(dbms_xplan.display_cursor())
这种方式可以显示执行过程中使用的真实计划。使用 dbms_xplan 显示计划还有其他几种方法。您可以 Google 与术语 "dbms_xplan"。
我们使用 Oracle PL/SQL Developer(版本 12.0.7)。然后我们使用F5按钮查看解释计划。
我有几个 SQL 查询的查询 运行 性能非常低,我想检查此查询的查询执行计划。我正在尝试执行以下查询,但未显示任何查询执行计划。它只显示消息计划 FOR 成功。我不知道我们必须在 oracle sql 开发人员中做任何设置来解释查询计划:
EXPLAIN PLAN FOR
Select SO.P_OPTION_ID FROM
SIMSIM
JOIN P_TYPE PT on PT.KEY=SIM.P_TYPE_KEY JOIN P_CONFIG PC ON PC.ID=PT.PRODUCT_CONFIG_ID
JOIN P_OPTION PO ON PO.OPTION_KEY=PC.DEFAULT_PRODUCT_OPTIONS JOIN S_OPTION SO ON SO.SERVICE_ID=SIM.ASSIGNED_TO_SERVICE_ID
JOIN AVV_NO AN ON SIM.ASSIGNED_ANUMBER_ID = AN.ID
where SO.STATUS_ID IN (20,40)
and SO.ID < to_char(SYSDATE - numtodsinterval ( 1,'MINUTE' ), 'YYYYMMDDHH24MISS')||'0000'
and SO.ID > to_char(SYSDATE - numtodsinterval ( 1, 'HOUR' ), 'YYYYMMDDHH24MISS')||'0000'
and NOT EXISTS(SELECT ID from TEMP_BPL T WHERE T.ID = SO.ID );
EXPLAIN PLAN FOR
在SQL开发者中,您不必使用EXPLAIN PLAN FOR
语句。按 F10
或单击 解释计划图标。
然后将显示在解释计划中window。
如果您使用 SQL*Plus 则使用 DBMS_XPLAN.
例如,
SQL> EXPLAIN PLAN FOR
2 SELECT * FROM DUAL;
Explained.
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 272002086
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected.
SQL>
Explain 仅显示优化器认为查询将如何执行。
要显示真正的计划,您需要 运行 sql 一次。然后使用相同的会话 运行 以下内容:
@yoursql
select * from table(dbms_xplan.display_cursor())
这种方式可以显示执行过程中使用的真实计划。使用 dbms_xplan 显示计划还有其他几种方法。您可以 Google 与术语 "dbms_xplan"。
我们使用 Oracle PL/SQL Developer(版本 12.0.7)。然后我们使用F5按钮查看解释计划。