如何在Oracle Sql Developer中查看解释计划?

问题描述 投票:0回答:3

我有很少的 SQL 查询,查询运行性能非常低,我想检查该查询的查询执行计划。我正在尝试执行以下查询,但它没有显示任何查询执行计划。其唯一的显示消息计划FOR成功了。我不知道我们在 oracle sql Developer 中是否需要做任何设置才能解释查询计划:

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 );
sql oracle oracle-sqldeveloper sql-execution-plan
3个回答
110
投票

解释计划

SQL Developer 中,您不必使用

EXPLAIN PLAN FOR
语句。按
F10
或单击 解释计划图标

enter image description here

然后它将显示在解释计划窗口

如果您使用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>

参见如何创建和显示解释计划


10
投票

Explain 仅显示优化器认为查询将如何执行。

要显示真正的计划,您需要运行一次sql。然后使用同一会话运行以下命令:

@yoursql;
select * from table(dbms_xplan.display_cursor()) 

这种方式可以显示执行过程中实际使用的计划。使用 dbms_xplan 显示计划还有其他几种方法。您可以通过 Google 搜索术语“dbms_xplan”。


1
投票

我们使用Oracle PL/SQL Developer(版本12.0.7)。我们使用F5按钮来查看解释计划。

© www.soinside.com 2019 - 2024. All rights reserved.