1
我在過去的工作的管理工作室,並記住解釋/查詢計劃是描述像以前那樣告訴如何獲得詳細的解釋計劃?
1)順序語句將被解僱
2)行數由每個語句
返回我使用OracleSQL開發人員的「解釋計劃」,但我沒有看到上述功能。有沒有其他好的免費工具?
我在過去的工作的管理工作室,並記住解釋/查詢計劃是描述像以前那樣告訴如何獲得詳細的解釋計劃?
1)順序語句將被解僱
2)行數由每個語句
返回我使用OracleSQL開發人員的「解釋計劃」,但我沒有看到上述功能。有沒有其他好的免費工具?
Order in which statements will be fired
Adrian Billington已經建立了一個「XPlan Utility」,延長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>
讓我們來看看擴展計劃中看到的步驟的順序。見ORD柱:
-- 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>
Number of rows return by each statement
在SQL開發,則解釋計劃窗口有基數列這說明行數的。使用DBMS_XPLAN,可以以可讀格式顯示。 行的列顯示的行數。
請參閱How to create and display explain plan in SQL*Plus。幾個很好的例子和用法here。
謝謝拉利特。我下載了該實用程序,但不知道如何獲得最後執行語句的計劃。我嘗試的是: - 解釋Select * from ...的計劃,然後使用參數(「PLAN_TABLE」,NULL,「TYPICAL」)運行xplan.display.sql – emilly
要獲得最後解釋的SQL語句的計劃,只需執行在SQL * Plus中是這樣的:'@ xplan.display.sql' –
當我從sqlplus運行'@ xplan.display.sql'時它說錯誤:無法從PLAN_TABLE獲取最後一個解釋計劃 – emilly