【问题标题】:How do I view the Explain Plan in Oracle Sql developer?如何在 Oracle Sql developer 中查看解释计划?
【发布时间】:2015-07-16 05:54:09
【问题描述】:

我有几个查询运行性能非常低的 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 );

【问题讨论】:

  • 您也可以使用 dbForge Studio for Oracle 中的 SQL Profiler 工具来完成。看看功能评论页面 - SQL Profiler

标签: sql oracle oracle-sqldeveloper sql-execution-plan


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 这对 PL/SQL 有效吗?
    • typo.. select * from table(dbms_xplan.display_cursor())
    • @RickHenderson 搜索执行计划,它是有效的,您应该在运行查询之前使用它:)
    【解决方案3】:

    解释计划

    SQL Developer 中,您不必使用EXPLAIN PLAN FOR 语句。按 F10 或点击 Explain Plan 图标

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

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

    How to create and display Explain Plan

    【讨论】:

    • 作为记录,我发现 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); 比 SQL Developer 的 Explain Plan window 产生大量更具可读性的输出。
    • @jpmc26 这取决于个人。我个人使用更多的命令行界面,但是,我的经理喜欢 GUI 来做类似的事情。
    • 我喜欢能很好地呈现信息的 GUI。我是说这种情况下的 GUI 不能很好地呈现信息。 ;)
    • @jpmc26 是的,与市场上的其他工具相比,它是非常基本的 GUI。
    猜你喜欢
    • 2020-03-04
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2012-12-16
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多