亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

EXPLAIN PLAN FOR 和 SET AUTOTRACE之間的差別是什么

發布時間:2021-11-04 18:27:42 來源:億速云 閱讀:173 作者:柒染 欄目:建站服務器

本篇文章為大家展示了EXPLAIN PLAN FOR 和 SET AUTOTRACE之間的差別是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

通常我們使用 EXPLAIN PLAN FOR 和 SET AUTOTRACE 來查看sql語句的執行計劃,這里做一個小實驗來看看兩種方法對sql執行情況的差別。
yang@rac1>create table yang_t as select * from t;
Table created.
yang@rac1>set autot on exp
yang@rac1>select * from yang_t;
        ID  NAME
---------- ------------------
    130864 YANG_SEQ
    132031 YANG_A
    132032 SYS_C0066382
    132033 YANG_B
    132034 SYS_C0066383
    132035 FACT
    132036 MLOG$_YANG_A
    132037 MLOG$_YANG_B
    132038 MLOG$_FACT
    132039 T
    131949 YANG_ROWID
    131951 YANG_PK
    131952 SYS_C0066303
    131955 YANG_OBJECT
    131956 YANG_OID
    131957 SYS_C0066304
    132018 YANG_C
    132017 MV_CAPABILITIES_TABLE
    132030 MLOG$_YANG_PK
    132027 MLOG$_YANG_ROWID
           LINKORACL
           LINKYANG
22 rows selected.

Execution Plan
----------------------------------------------------------
Plan hash value: 2508602004
----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |    22 |  1738 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| YANG_T |    22 |  1738 |     3   (0)| 00:00:01 |
----------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement (level=2)

yang@rac1>set autot off
yang@rac1>select executions,parse_calls from v$sqlarea where sql_text like 'select * from yang_t';
EXECUTIONS PARSE_CALLS
---------- -----------
         1           1
yang@rac1>set autot on exp
yang@rac1>set autotrace  traceonly
yang@rac1>select * from yang_t;
22 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 2508602004
----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |    22 |  1738 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| YANG_T |    22 |  1738 |     3   (0)| 00:00:01 |
----------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
         21  recursive calls
         61  db block gets
         33  consistent gets
          6  physical reads
      14040  redo size
       1082  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         22  rows processed
yang@rac1>set autot off
再次查詢是否執行。可以看出使用set autotrace 查看執行計劃時,oracle會執行一下sql語句的。
yang@rac1>select executions,parse_calls from v$sqlarea where sql_text like 'select * from yang_t';
EXECUTIONS PARSE_CALLS
---------- -----------
         2           2
對測試表進行dml操作。并查看dml 的執行情況。
yang@rac1>insert into yang_t values (1,2);
1 row created.
yang@rac1>commit;
Commit complete.
yang@rac1>select executions,parse_calls from v$sqlarea where sql_text like 'insert into yang_t values (1,2);';
no rows selected
yang@rac1>select executions,parse_calls from v$sqlarea where sql_text like 'insert into yang_t values%';
EXECUTIONS PARSE_CALLS
---------- -----------
         1           1
=======EXPLAIN PLAN FOR ========
實驗一下EXPLAIN PLAN 查看sql語句執行計劃的情況。
yang@rac1>EXPLAIN PLAN FOR SELECT * FROM YANG_T;
Explained.
yang@rac1>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------
Plan hash value: 2508602004
----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |    23 |  1817 |     4   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| YANG_T |    23 |  1817 |     4   (0)| 00:00:01 |
----------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
12 rows selected.
從下面的查詢結果中可以看出使用EXPLAIN PLAN FOR 查看執行計劃時oracle是沒有執行要查看執行計劃的sql 語句的。
yang@rac1>select executions,parse_calls from v$sqlarea where sql_text like 'SELECT * FROM YANG_T%';
no rows selected
yang@rac1>select executions,parse_calls from v$sqlarea where sql_text like 'SELECT * FROM YANG%';

no rows selected

yang@rac1>select executions,parse_calls from v$sqlarea where sql_text like 'select * from yang_t';
EXECUTIONS PARSE_CALLS
---------- -----------
         2           2
yang@rac1>
小結:
      EXPLAIN PLAN FOR 方式查看執行計劃時oracle本身并不真正的執行該sql 語句,只是對sql進行解析獲取執行計劃。
    SET AUTOTRACE   方式查看sql語句的執行計劃則是oracle 則對sql進行 解析并執行的。

上述內容就是EXPLAIN PLAN FOR 和 SET AUTOTRACE之間的差別是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯留县| 大名县| 天水市| 南陵县| 聂荣县| 南溪县| 永福县| 郑州市| 杭锦后旗| 建昌县| 于田县| 乌恰县| 江永县| 游戏| 施秉县| 老河口市| 手机| 远安县| 门头沟区| 开平市| 师宗县| 金寨县| 潮州市| 梓潼县| 廉江市| 兴文县| 通城县| 普定县| 治多县| 蒲城县| 丰顺县| 开封市| 太谷县| 吴桥县| 阜宁县| 孟连| 铜川市| 资兴市| 中阳县| 什邡市| 淮北市|