欢迎光临
我们一直在努力

dbms_xplan.display_cursor包与ADVANCED ALLSTATS LAST PEEKED_BINDS区别是什么

dbms_xplan.display_cursor包与ADVANCED ALLSTATS LAST PEEKED_BINDS区别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

结论1:使用ALL LAST比typical多了Query Block Name / Object
Alias和Column Projection Information(列的信息)

结论2:ADVANCED ALLSTATS LAST PEEKED_BINDS比ALL LAST多了这些内容:outline和NOTE,当然如果使用了绑定变量的话,还有绑定变量信息

结论3:一般来说ALL LAST就已经够用了。

使用一个不使用绑定变量的语句来做对比试验:

select /*weiwei*/ e.ename,d.dname from scott.emp e,scott.dept d where
e.deptno=d.deptno;

SQL> SELECT *
FROM table (DBMS_XPLAN.DISPLAY_CURSOR);

PLAN_TABLE_OUTPUT

——————————————————————————————————————————————————————————————————–

SQL_ID        1qwpbwszr5hwb,
child number 0

————————————-

select /*weiwei*/ e.ename,d.dname from
scott.emp e,scott.dept d where

e.deptno=d.deptno

Plan hash value: 844388907

—————————————————————————————-

| Id 
|
Operation                     | Name   
| Rows  | Bytes | Cost (%CPU)|
Time     |

—————————————————————————————-

|  
0 | SELECT
STATEMENT            
|               |      
|       |     6
(100)|               |

|  
1 |  MERGE
JOIN                     |               |   
14 |   308 |    
6        (17)| 00:00:01 |

|  
2 |   TABLE ACCESS BY INDEX ROWID|
DEPT    |     4 |   
52 |    
2         (0)| 00:00:01 |

|  
3 |    INDEX FULL
SCAN             | PK_DEPT |     4 |      
|    
1         (0)| 00:00:01 |

|* 
4 |   SORT
JOIN                     |               |   
14 |   126 |    
4        (25)| 00:00:01 |

|  
5 |    TABLE ACCESS
FULL             | EMP    
|    14 |   126 |    
3         (0)| 00:00:01 |

—————————————————————————————-

Predicate Information (identified by
operation id):

—————————————————

  
4 –
access("E"."DEPTNO"="D"."DEPTNO")

      
filter("E"."DEPTNO"="D"."DEPTNO")

24 rows selected.

select
sql_id,CHILD_NUMBER,sql_text
from v$SQL where sql_text like '%weiwei%' and  sql_text not like '%like%';

获得SQL_id为1qwpbwszr5hwb,CHILD_NUMBER为0

select * from table(dbms_xplan.display_cursor('1qwpbwszr5hwb',null,'ALL LAST'));

SQL> select *
from table(dbms_xplan.display_cursor('1qwpbwszr5hwb',null,'ALL LAST'));

PLAN_TABLE_OUTPUT

——————————————————————————————————————————————————————————————————–

SQL_ID        1qwpbwszr5hwb,
child number 0

————————————-

select /*weiwei*/
e.ename,d.dname from scott.emp e,scott.dept d where

e.deptno=d.deptno

Plan hash value:
844388907

—————————————————————————————-

| Id  |
Operation                     | Name   
| Rows  | Bytes | Cost (%CPU)|
Time     |

—————————————————————————————-

|   0 | SELECT
STATEMENT            
|               |      
|       |     6
(100)|               |

|   1 | 
MERGE
JOIN                     |               |   
14 |   308 |    
6        (17)| 00:00:01 |

|   2 |  
TABLE ACCESS BY INDEX ROWID| DEPT   
|     4 |    52 |    
2         (0)| 00:00:01 |

|   3 |   
INDEX FULL SCAN             | PK_DEPT |     4 |      
|    
1         (0)| 00:00:01 |

|*  4 |  
SORT
JOIN                     |               |   
14 |   126 |    
4        (25)| 00:00:01 |

|   5 |   
TABLE ACCESS FULL             | EMP    
|    14 |   126 |    
3         (0)| 00:00:01 |

—————————————————————————————-

Query
Block Name / Object Alias (identified by operation id):

————————————————————-

   1 – SEL$1

   2 – SEL$1 / D@SEL$1

   3 – SEL$1 / D@SEL$1

   5 – SEL$1 / E@SEL$1

Predicate
Information (identified by operation id):

—————————————————

   4 –
access("E"."DEPTNO"="D"."DEPTNO")

      
filter("E"."DEPTNO"="D"."DEPTNO")

Column
Projection Information (identified by operation id):

———————————————————–

   1 –
"D"."DNAME"[VARCHAR2,14],
"E"."ENAME"[VARCHAR2,10]

   2 –
"D"."DEPTNO"[NUMBER,22],
"D"."DNAME"[VARCHAR2,14]

   3 – "D".ROWID[ROWID,10],
"D"."DEPTNO"[NUMBER,22]

   4 – (#keys=1)
"E"."DEPTNO"[NUMBER,22],
"E"."ENAME"[VARCHAR2,10]

   5 –
"E"."ENAME"[VARCHAR2,10],
"E"."DEPTNO"[NUMBER,22]

41 rows selected.

结论1:使用ALL LAST比typical多了Query Block Name / Object
Alias和Column Projection Information(列的信息)

再对比ALL LAST与ADVANCED ALLSTATS LAST PEEKED_BINDS

最后最全的是65行

select
* from table(dbms_xplan.display_cursor('1qwpbwszr5hwb',0,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));

SQL> select *
from table(dbms_xplan.display_cursor('1qwpbwszr5hwb',0,'ADVANCED ALLSTATS LAST
PEEKED_BINDS'));

PLAN_TABLE_OUTPUT

——————————————————————————————————————————————————————————————————–

SQL_ID        1qwpbwszr5hwb,
child number 0

————————————-

select /*weiwei*/
e.ename,d.dname from scott.emp e,scott.dept d where

e.deptno=d.deptno

Plan hash value:
844388907

——————————————————————————————————————–

| Id  |
Operation                     | Name   
| E-Rows |E-Bytes| Cost (%CPU)|
E-Time        |  OMem | 
1Mem | Used-Mem |

——————————————————————————————————————–

|   0 | SELECT
STATEMENT            
|               |        |        |     6
(100)|                |        |        |           |

|   1 | 
MERGE
JOIN                     |               |    
14 |   308 |     6  (17)|
00:00:01
|        |        |           |

|   2 |  
TABLE ACCESS BY INDEX ROWID| DEPT   
|      4 |    52 |    
2   (0)| 00:00:01
|        |        |           |

|   3 |   
INDEX FULL SCAN             | PK_DEPT |      4 |        |     1  
(0)| 00:00:01
|        |        |           |

|*  4 |  
SORT
JOIN                     |               |    
14 |   126 |     4  (25)|
00:00:01 |  2048 |  2048 |
2048        (0)|

|   5 |   
TABLE ACCESS FULL             | EMP    
|     14 |   126 |    
3   (0)| 00:00:01
|        |        |           |

——————————————————————————————————————–

Query Block Name /
Object Alias (identified by operation id):

————————————————————-

   1 – SEL$1

   2 – SEL$1 / D@SEL$1

   3 – SEL$1 / D@SEL$1

   5 – SEL$1 / E@SEL$1

Outline
Data

————-

  /*+

      BEGIN_OUTLINE_DATA

      IGNORE_OPTIM_EMBEDDED_HINTS

      OPTIMIZER_FEATURES_ENABLE('11.2.0.3')

      DB_VERSION('11.2.0.3')

      OPT_PARAM('query_rewrite_enabled'
'false')

      ALL_ROWS

      OUTLINE_LEAF(@"SEL$1")

      INDEX(@"SEL$1"
"D"@"SEL$1" ("DEPT"."DEPTNO"))

      FULL(@"SEL$1"
"E"@"SEL$1")

      LEADING(@"SEL$1"
"D"@"SEL$1" "E"@"SEL$1")

      USE_MERGE(@"SEL$1"
"E"@"SEL$1")

      END_OUTLINE_DATA

  */

Predicate
Information (identified by operation id):

—————————————————

   4 –
access("E"."DEPTNO"="D"."DEPTNO")

      
filter("E"."DEPTNO"="D"."DEPTNO")

Column Projection
Information (identified by operation id):

———————————————————–

   1 –
"D"."DNAME"[VARCHAR2,14],
"E"."ENAME"[VARCHAR2,10]

   2 –
"D"."DEPTNO"[NUMBER,22],
"D"."DNAME"[VARCHAR2,14]

   3 – "D".ROWID[ROWID,10],
"D"."DEPTNO"[NUMBER,22]

   4 – (#keys=1)
"E"."DEPTNO"[NUMBER,22],
"E"."ENAME"[VARCHAR2,10]

   5 –
"E"."ENAME"[VARCHAR2,10],
"E"."DEPTNO"[NUMBER,22]

Note

—–

   – Warning: basic plan statistics not
available. These are only collected when:

       * hint 'gather_plan_statistics' is used
for the statement or

       * parameter 'statistics_level' is set to
'ALL', at session or system level

 rows selected.

结论2:ADVANCED ALLSTATS LAST PEEKED_BINDS比ALL LAST多了这些内容:outline和NOTE,当然如果使用了绑定变量的话,还有绑定变量信息

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注云搜网行业资讯频道,感谢您对云搜网的支持。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。