Oracle执行计划解释3

上一篇 / 下一篇  2009-01-13 23:15:28 / 个人分类:Oracle

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP
根据索引的类型与where限制条件的不同,有4种类型的索引扫描:51Testing软件测试网mY0X rbq

    索引唯一扫描(index unique scan)

5\#S9N.XK!Tp+oq051Testing软件测试网(O-A x4n2^ Y

    索引范围扫描(index range scan)51Testing软件测试网(U{sQ!h8~@:c

,V'J"UGSYl0    索引全扫描(index full scan)

O g&MSCS:fZm0

z }!V4[}V D;lx0    索引快速扫描(index fast full scan)

n.fA}2ZP`!zDQ(m`2H0

kt7r4W _5B)xkky0    (1) 索引唯一扫描(index unique scan)51Testing软件测试网!]? {_}9}6h,q.PE

i3K-q;r3^7UVG/y0    通过唯一索引查找一个数值经常返回单个ROWID.如果存在UNIQUE 或PRIMARY KEY 约束(它保证了语句只存取单行)的话,Oracle经常实现唯一性扫描。

l_.ulB2o!{051Testing软件测试网V}3AQ-v[

    使用唯一性约束的例子:51Testing软件测试网 LDD y/Dw#J6l

51Testing软件测试网8Ib3rK8I.\O'eh"~

    SQL> explain plan for

Qh [9_KJQ051Testing软件测试网fiV6jq1al

    select empno,ename from emp where empno=10;51Testing软件测试网[4R&j+x.b/b%@8J$n/T

51Testing软件测试网+`F1clk/Am*u

    Query Plan

&Q*l;k1x GM ~051Testing软件测试网,K'] {qUto2Fi

------------------------------------

EX0A2n!n,{B051Testing软件测试网bqF*A!`d

    SELECT STATEMENT [CHOOSE] Cost=1

Y^O4BFg[m{"E0S051Testing软件测试网 @0D/I @!Ca7c%|

    TABLE ACCESS BY ROWID EMP [ANALYZED]51Testing软件测试网;?A Cb&BT;b u7z8Q0j

Yrg)V!`!iX iE0    INDEX UNIQUE SCAN EMP_I151Testing软件测试网B)E*S r'R8HHl Y1@@o

51Testing软件测试网V4sY1MJ0u#Xe

    (2) 索引范围扫描(index range scan)

:?q,oO(}bI KAW0

[!}*X8V_Or.u7[z3s0    使用一个索引存取多行数据,在唯一索引上使用索引范围扫描的典型情况下是在谓词(where限制条件)中使用了范围操作符(如>、<、<>、>=、<=、between)51Testing软件测试网 Z;aYc'b(h+i

o z"mrdhsDO;g V,N0    使用索引范围扫描的例子:

e$oYq dE'v+x6bd'm051Testing软件测试网]'TcD2l)^[

    SQL> explain plan for select empno,ename from emp

eL,~i;yk7Njh051Testing软件测试网F6x3M0cyr(t.DxB

    where empno > 7876 order by empno;

Y"hH&I?0

lu ?-c7M&pflTq:L0    Query Plan

7L u}2R _KA2OG1F.@ v051Testing软件测试网GX4~i,jo+k

--------------------------------------------------------------------------------51Testing软件测试网O*u"B3vmZ_

VOBxx([-cdc|*p0    SELECT STATEMENT[CHOOSE] Cost=151Testing软件测试网[;|wm QQIj

w(O$fl?v)y7h`3X0j0    TABLE ACCESS BY ROWID EMP [ANALYZED]51Testing软件测试网"PYL4ZFT

51Testing软件测试网g9M+L0R;o'V

    INDEX RANGE SCAN EMP_I1 [ANALYZED]51Testing软件测试网Lopld k(E/E

51Testing软件测试网 ]%uzymN

    在非唯一索引上,谓词col = 5可能返回多行数据,所以在非唯一索引上都使用索引范围扫描。51Testing软件测试网6a9ErK'RH_ o

k!bRn SY0    使用index rang scan的3种情况:51Testing软件测试网z9jl R}*[2^#b.c

X#|@1N GQ1p4c3t0    (a) 在唯一索引列上使用了range操作符(> < <> >= <= between)51Testing软件测试网8K__W5k7Y q@qE B

;B%I1G-niv&M4^0    (b) 在组合索引上,只使用部分列进行查询,导致查询出多行

~ R[M,Qn z/x0

2A-C}M AD6^2p+l~0    (c) 对非唯一索引列上进行的任何查询。

8F} v8bC!E)~5q^*Y-R0

a:|j`HV].[0    (3) 索引全扫描(index full scan)

q3Xy9FJ.J(Q051Testing软件测试网IKt:c5Z

    与全表扫描对应,也有相应的全索引扫描。而且此时查询出的数据都必须从索引中可以直接得到。

1ADCD^Y0

x.{ grj{b&kI!G0    全索引扫描的例子:

b `;~O'P'd051Testing软件测试网rg-x3`?j.K0Z

    An Index full scan will not perform single block i/o''s and so it may prove to be inefficient.51Testing软件测试网#M)O\2iGi&FKn}!|

.d%\+RvG$y h$B&dH0    e.g.51Testing软件测试网ho&]hkh

51Testing软件测试网~u0a:q;Zx/u(M

    Index BE_IX is a concatenated index on big_emp (empno, ename)

2I2q ~IN2[0

n&@I:QJy]:z0    SQL> explain plan for select empno, ename from big_emp order by empno,ename;

7v,bb4yo4O_0

5M3b:?6R mh6J[0    Query Plan

W5HF T |-au_$A0

;s.J.w/r?+w]9Y0--------------------------------------------------------------------------------51Testing软件测试网&aNw-n.P

51Testing软件测试网H)|8t k"q8vti&a \

    SELECT STATEMENT[CHOOSE] Cost=2651Testing软件测试网v+WI-Az;u

51Testing软件测试网 ` wM FT"s9m

    INDEX FULL SCAN BE_IX [ANALYZED]51Testing软件测试网uWZ\:ej@ v2j r v

ITi f| p4q0    (4) 索引快速扫描(index fast full scan)

lph,F$`smk0

P+Y(|%xkR~*f-?,n0    扫描索引中的所有的数据块,与 index full scan很类似,但是一个显著的区别就是它不对查询出的数据进行排序,即数据不是以排序顺序被返回。在这种存取方法中,可以使用多块读功能,也可以使用并行读入,以便获得最大吞吐量与缩短执行时间。51Testing软件测试网1A @'nS*fN4mM|

51Testing软件测试网4b Kui:Z2W+Wf}|t

    索引快速扫描的例子:

,Vz,Y6]2Jy&`_051Testing软件测试网 r].B Z/Az9H _

    BE_IX索引是一个多列索引: big_emp (empno,ename)

8D:x$z*o7o9`1L[{+@s0

GSR,i"p.x0    SQL> explain plan for select empno,ename from big_emp;51Testing软件测试网1C |9j8s ~)bg*T

51Testing软件测试网cuR4Q;Nk1C[V/ud

    Query Plan

N7F7P S} tP051Testing软件测试网&M)y nXB_#\ T

------------------------------------------51Testing软件测试网Y*n AQw1e5dt;u+E

51Testing软件测试网/Vu;p't-Q;H }.y$`~

    SELECT STATEMENT[CHOOSE] Cost=151Testing软件测试网AU-M"s V|0b9|

51Testing软件测试网:s0L'ryrte~

    INDEX FAST FULL SCAN BE_IX [ANALYZED]51Testing软件测试网{ k9y@0b*uj5M,B7n_

51Testing软件测试网U8c%E+GT/aQ S4v r

    只选择多列索引的第2列:

.K3S%Z"Vl-x051Testing软件测试网 cY|$H/I8|

    SQL> explain plan for select ename from big_emp;51Testing软件测试网-Dd:kR"Q Xi(PT/]

51Testing软件测试网n9Ox(IOxC+Y

    Query Plan51Testing软件测试网8q,O ? ah3e~

51Testing软件测试网M+G \9Td

------------------------------------------

Gp:k2UlC/f"n051Testing软件测试网&^$Azr wx:D:m

    SELECT STATEMENT[CHOOSE] Cost=151Testing软件测试网5`v`,R6h7Mc

;g'{B Me xd7A'g F0    INDEX FAST FULL SCAN BE_IX [ANALYZED]51Testing软件测试网E W*A,n$x}

TAG: Oracle

 

评分:0

我来说两句

Open Toolbar