a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 188|回复: 0

[考试辅导] Oracle10g中通过EXPLAINPLANFOR查看DDL语句执行计划

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
从Oracle10g开始,可以通过EXPLAIN PLAN FOR查看DDL语句的执行计划了。 0 c8 [0 s( r2 Z; b( U/ p' u7 y
/ q+ c' o/ F( N- \3 j6 o" `

& {! C( `. T1 y在9i及以前版本,Oracle只能看到DML的执行计划,不过从10g开始,通过EXPLAIN PLAN FOR的方式,已经可以看到DDL语句的执行计划了。
' F% \) k. F6 O* Q' u) w" S这对于研究CREATE TABLE AS SELECT、CREATE MATERIALIZED VIEW AS SELECT以及CREATE INDEX,ALTER INDEX REBUILD等语句有很大的帮助。
: K2 a: D, G: Y8 n# u6 S% V举个简单的例子,Oracle的文档上对于索引的建立有如下描述:
" D1 h. }5 p6 z, y( b$ ~% L+ UThe optimizer can use an existing index to build another index. This results in a much faster index build.
3 P4 `' g* W+ _& J. b. Y% }: t如果看不到DDL的执行计划,只能根据执行时间的长短去猜测Oracle的具体执行计划,但是这种方法没有足够的说服力。但是通过DDL的执行计划,就使得结果一目了然了。
) A4 m4 [) j* u0 h! t$ w% @SQL> CREATE TABLE T AS SELECT * FROM DBA_OBJECTS;
+ a7 v5 w: f5 F% x; H表已创建。 5 }+ V; S2 [8 e) t1 R& ~, o6 h
SQL> EXPLAIN PLAN FOR / f! U* ~9 `, a6 g
2 CREATE INDEX IND_T_NAME ON T(OBJECT_NAME);
; ~# o* H. q6 f8 X. L9 t已解释。 . U$ P6 c& T% Q9 Q) p
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); 7 l9 v2 m& Y6 m. K6 o1 \' c
PLAN_TABLE_OUTPUT / R( p* c$ {4 o" z1 Y+ J/ p
------------------------------------------------------------------------------------
1 {# P* [6 s; B! J3 b( vPlan hash value: 3035241083
9 c. \/ B6 ^0 B% w3 U-------------------------------------------------------------------------------------
3 Q2 B* e0 c4 \9 B/ l| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 2 T3 y  s) K& ~  w; D% \
-------------------------------------------------------------------------------------
+ Q$ J) V& k8 O) u( H! h; R( ?| 0 | CREATE INDEX STATEMENT | | 57915 | 3732K| 75 (2)| 00:00:01 |
: j) P; f7 a! T7 }- S* A5 ?& A  e) t| 1 | INDEX BUILD NON UNIQUE| IND_T_NAME | | | | |
  L/ t0 H2 |, o' k/ w0 B* ]| 2 | SORT CREATE INDEX | | 57915 | 3732K| | | 2 Y7 I2 T" \, w* M( Q1 E; A* r& h% ?
| 3 | TABLE ACCESS FULL | T | 57915 | 3732K| 41 (3)| 00:00:01 | 5 l" Z3 X4 G1 u9 {  _( h9 G
------------------------------------------------------------------------------------- 9 Z; V* q) Y: L, ~# G* B# F& w" v7 f
Note
7 E& m: O/ m3 a# a) Y5 k----- ! m" R9 X" [5 g
- estimated index size: 5242K bytes . z& N: k; W; k0 Z* v
已选择14行。 ; p# x7 e+ j9 l0 [! G" r* L1 X- `
SQL> CREATE INDEX IND_T_OWNER_NAME ON T(OWNER, OBJECT_NAME); 9 n6 r. H& X5 Y* Z5 D3 S& F
索引已创建。 2 o' D; v9 }  R7 U
SQL> EXPLAIN PLAN FOR : ~9 q; ?6 p# ~; `2 n: U
2 CREATE INDEX IND_T_NAME ON T(OBJECT_NAME); $ c' k/ [4 G# a/ R
已解释。 3 `( i/ a0 q" I( n2 ]
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); & [& j  ^2 j, ?! x
PLAN_TABLE_OUTPUT
: I7 l5 Z5 B( U( B( p: }! R-------------------------------------------------------------------------------------------
  @# l- R$ X* O! \! sPlan hash value: 517242163 1 A+ w5 Q$ g) @/ D
------------------------------------------------------------------------------------------- * p3 A9 s* j/ L. o
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
! A- U6 B  W' D4 o$ T# j  R------------------------------------------------------------------------------------------- + W* V/ }% t  I% ~; F+ K
| 0 | CREATE INDEX STATEMENT | | 57915 | 3732K| 75 (2)| 00:00:01 | 4 `8 {7 d/ [& i
| 1 | INDEX BUILD NON UNIQUE| IND_T_NAME | | | | |
- N. G* E  l& D/ A  C) {| 2 | SORT CREATE INDEX | | 57915 | 3732K| | |
$ A+ k- ^, b% r$ H% u' f# T/ w| 3 | INDEX FAST FULL SCAN| IND_T_OWNER_NAME | | | | | 8 Q. ~0 @, y) j  Z. J& U
-------------------------------------------------------------------------------------------
. e# a) F- Z! I& W$ l' ~Note
. X% h, G" u0 E! T" |) j% [-----
1 c0 G- @& y5 \8 A2 o  [1 Y! o, o3 s% ?4 A- estimated index size: 5242K bytes ; `& y4 S6 r% f5 r3 H8 }
已选择14行。 ( d* g1 U1 A1 T! t$ h
SQL> SET AUTOT ON
: q" P+ ~# ~3 H5 e7 `* KSQL> CREATE INDEX IND_T_NAME ON T(OBJECT_NAME); # q- P$ r4 O" R4 R. _
索引已创建。 % H5 @. Y- `0 d3 |! t5 A: p
注意,查看DDL的执行计划需要使用EXPLAIN PLAN FOR,AUTOTRACE对于DDL是无效的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-8 03:59 , Processed in 0.214909 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表