a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 127|回复: 0

[考试辅导] Oracle技术:通过EXPLAINPLANFOR查看DDL语句执行计划

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
在9i及以前版本,Oracle只能看到DML的执行打算,不外从10g起头,经由过程EXPLAIN PLAN FOR的体例,已经可以看到DDL语句的执行打算了。
& w+ [0 _2 F  r! W- m这对于研究CREATE TABLE AS SELECT、CREATE MATERIALIZED VIEW AS SELECT以及CREATE INDEX,ALTER INDEX REBUILD等语句有很大的辅佐。
4 M+ }$ b6 M3 `! G& Y举个简单的例子,Oracle的文档上对于索引的成立有如下描述: 4 I& ^0 `( r% e; i; i
The optimizer can use an existing index to build another index. This results in a much faster index build. 7 U; A; G7 Z. I  h5 h( A" ~: S, {* B
如不美旁观不到DDL的执行打算,只能按照执行时刻的长短去猜测Oracle的具体执行打算,可是这种体例没有足够的说服力。可是经由过程DDL的执行打算,就使得结不美观一目了然了。   R/ Q5 D* `' s1 y% o5 g7 V
SQL> CREATE TABLE T AS SELECT * FROM DBA_OBJECTS; 1 y; J" W  v) w/ r' ^( B' }6 I
表已建树。
$ r* _6 d1 S4 W# q( q0 ~0 dSQL> EXPLAIN PLAN FOR + ~* z7 m* |: Z% W: R, d" N* D8 w
2 CREATE INDEX IND_T_NAME ON T(OBJECT_NAME); 5 I. W5 ?3 X7 q  x  E( C
已诠释。
0 P! Y1 b. W" F1 m, kSQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); ( u/ y7 ?7 S6 {7 W9 l7 z" w6 C
PLAN_TABLE_OUTPUT
& H# P3 R! X& y4 ]' x# b$ J------------------------------------------------------------------------------------
8 C& b, R  @8 wPlan hash value: 3035241083
/ {* A+ e0 z5 a7 ~5 H: Z------------------------------------------------------------------------------------- 2 e4 _2 f+ e2 @' C; S- E! h
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 5 o1 j  m" R7 E" F2 T. F
------------------------------------------------------------------------------------- % u$ c. ?9 H+ u7 C; R# W& F+ h
| 0 | CREATE INDEX STATEMENT | | 57915 | 3732K| 75 (2)| 00:00:01 |
, m$ K1 T. c! c" k7 O| 1 | INDEX BUILD NON UNIQUE| IND_T_NAME | | | | | - L8 z4 a3 s2 J+ E% x
| 2 | SORT CREATE INDEX | | 57915 | 3732K| | |
- j; q, S' H2 Z+ q  h* V| 3 | TABLE ACCESS FULL | T | 57915 | 3732K| 41 (3)| 00:00:01 |
) w8 w6 V( U; ?9 ]------------------------------------------------------------------------------------- ( u, q# `" C8 m) ]- G( d
Note
& K- o7 S: C' y; P-----
9 [. w9 _% k$ E- estimated index size: 5242K bytes
$ {& X8 L+ {0 b) o; A" D- T  |已选择14行。 9 V( T! D' G7 E3 D) G
SQL> CREATE INDEX IND_T_OWNER_NAME ON T(OWNER, OBJECT_NAME); . x: i) `+ K' T# g' I  e  c
索引已建树。
' F7 D' A$ N4 p+ ~. oSQL> EXPLAIN PLAN FOR
) w4 R' h& B, Y2 CREATE INDEX IND_T_NAME ON T(OBJECT_NAME);
; d) Y3 M6 `) S+ D2 {# A' x, [/ O已诠释。 ! t0 z! U: H% v$ S. Z' M
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); $ t% s' O. r0 U* W
PLAN_TABLE_OUTPUT ( b- e- d/ o+ D, z
-------------------------------------------------------------------------------------------
. m: ~  ]3 ?: n: V) P3 x2 FPlan hash value: 517242163 & N1 D+ e% n) M* B
-------------------------------------------------------------------------------------------
/ i  |' Y$ C4 J( Y$ q5 M| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | - ^5 h8 |; W0 E+ c4 _7 @
-------------------------------------------------------------------------------------------
- w8 y" n/ L. {! A& M2 X/ Y| 0 | CREATE INDEX STATEMENT | | 57915 | 3732K| 75 (2)| 00:00:01 | * \4 h: X/ s0 o$ R3 b/ g1 w% j$ F
| 1 | INDEX BUILD NON UNIQUE| IND_T_NAME | | | | | 8 f6 N- Z8 k/ C* g4 h2 ~
| 2 | SORT CREATE INDEX | | 57915 | 3732K| | |
0 h% P' |. Z' [$ N1 p| 3 | INDEX FAST FULL SCAN| IND_T_OWNER_NAME | | | | | 2 J1 G" r5 U" o+ f( K. n+ C
-------------------------------------------------------------------------------------------
: u2 A+ u) t! O+ J3 B6 yNote
+ K( M/ m/ ]) \-----
; B9 u+ Q. }! z. M- estimated index size: 5242K bytes # K/ r1 W9 X/ ^+ t" q
已选择14行。 7 c" L" v- |0 X2 [" D0 w8 ^6 z: n; i
SQL> SET AUTOT ON , j3 K0 R2 Q0 V% J: c
SQL> CREATE INDEX IND_T_NAME ON T(OBJECT_NAME); 3 P% O" q2 U- ]2 Z+ Q  s  v0 G
索引已建树。 9 h/ ~* B- j' L5 z) ?
注重,查看DDL的执行打算需要使用EXPLAIN PLAN FOR,AUTOTRACE对于DDL是无效的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 19:47 , Processed in 0.239685 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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