代码之家  ›  专栏  ›  技术社区  ›  Aaron Digulla

我如何在SquirrelSQL中看到Oracle执行计划?

  •  0
  • Aaron Digulla  · 技术社区  · 6 年前

    我正在尝试使用squirrelSQL 3.6获取Oracle(11)的执行计划。

    我可以在“结果”选项卡旁边看到“解释计划”选项卡,但它始终为空。 当我第一次单击它时,我得到一个对话框,要求创建 PLAN_TABLE 但“解释计划”选项卡中的表保持为空。

    我试图补充 explain plan for 在我询问之前,但那给了我一个 Error: ORA-00905: missing keyword

    1 回复  |  直到 6 年前
        1
  •  1
  •   Marmite Bomber    6 年前

    独立于SQL客户端的简单方法:

    EXPLAIN PLAN  SET STATEMENT_ID = 'yourTag' into   plan_table  FOR
    select .... your query here ... from tab;
    ---    
    SELECT * FROM table(DBMS_XPLAN.DISPLAY('plan_table', 'yourTag','ALL'));
    

    您将得到作为查询结果的完整执行计划。 这个 PLAN_TABLE 必须存在,并且必须授予您的用户读写权限。

    查询的示例输出

    select * from dual where dummy = 'X';
    
    
    
    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 STORAGE FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |
    ----------------------------------------------------------------------------------
    
    Query Block Name / Object Alias (identified by operation id):
    -------------------------------------------------------------
    
       1 - SEL$1 / DUAL@SEL$1
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - storage("DUMMY"='X')
           filter("DUMMY"='X')
    
    Column Projection Information (identified by operation id):
    -----------------------------------------------------------
    
       1 - "DUMMY"[VARCHAR2,1]