千家信息网

Oracle 查看执行计划问题

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,一、描述在查看执行计划测试的过程中遇到使用dbms_xplan.display无法查看执行计划,发现是因为之前在测试的过程中打开了set autot on,关闭后(set autot off) ,执行
千家信息网最后更新 2025年02月01日Oracle 查看执行计划问题

一、描述
在查看执行计划测试的过程中遇到使用dbms_xplan.display无法查看执行计划,发现是因为之前在测试的过程中打开了set autot on,关闭后(set autot off) ,执行计划可以正常显示。

二、操作过程

SQL> SQL> explain plan for select count(*) from tt;Explained.Elapsed: 00:00:00.00SQL> set lines 200 pages 2000SQL> select * from table(dbms_xplan.display());9 rows selected.Elapsed: 00:00:00.02Execution Plan----------------------------------------------------------Plan hash value: 2137789089---------------------------------------------------------------------------------------------| Id  | Operation                         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |---------------------------------------------------------------------------------------------|   0 | SELECT STATEMENT                  |         |  8168 | 16336 |    29   (0)| 00:00:01 ||   1 |  COLLECTION ITERATOR PICKLER FETCH| DISPLAY |  8168 | 16336 |    29   (0)| 00:00:01 |---------------------------------------------------------------------------------------------Statistics----------------------------------------------------------         14  recursive calls         12  db block gets         55  consistent gets          0  physical reads          0  redo size       1124  bytes sent via SQL*Net to client        519  bytes received via SQL*Net from client          2  SQL*Net roundtrips to/from client          1  sorts (memory)          0  sorts (disk)          9  rows processed##上面无法显示执行计划,很奇怪!!!                 ##关闭autot ,再次查看执行计划OK!!!SQL> set autot offSQL> select * from table(dbms_xplan.display());PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Plan hash value: 3133740314-------------------------------------------------------------------| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |-------------------------------------------------------------------|   0 | SELECT STATEMENT   |      |     1 | 21556   (1)| 00:04:19 ||   1 |  SORT AGGREGATE    |      |     1 |            |          ||   2 |   TABLE ACCESS FULL| TT   |  2762K| 21556   (1)| 00:04:19 |-------------------------------------------------------------------9 rows selected.Elapsed: 00:00:00.02##解释一下执行计划,首先是做了全表扫描这个很容易理解,sort aggregage 是因为做了count(*) 聚合。SQL> 
0