文档介绍:: .
Oracle 执行计划详解
(VG8\%x.\)\0
简介: ITPUB 个人空间 -L
p9ohHv }*V
本文全面详细介绍 oracle执行计划的相关的概念, 访问 数据的存取方法,表之间的连接等内容。
/V(Odd$J+S#MOEO 并有总结和概述,便于理解与记忆
}%{'#O+SQT%Tc0+++ITPUB 个人空间-D
AmG"]
目录
'-Nx [*h!〜7m1A0---
h/C$o4z'B#vmO —.相关的概念
丫&TS-S&K5q9AL0 Rowid 的概念 ITPUB 个人
空间7|}
z T3S U;F/vfs y
Recursive Sql 概念
d
{+P)se$b+P3ARGV0 Predicate(谓词)
$W7Y1{$['\#g m8M0 DRiving
Table(驱动表)
e|d U8G rGB-V*RO Probed
Table(被探查表)
Z:}8k7FS ;fO
组合索弓丨(concatenated index)
"M FoL)丫******@N4V!Q0 可选择性
(selectivity)
ITPUB 个人空间 #y6dB:q!K
tu
oracle访问数据的存取方法 ITPUB个人空间$W z$\*L
m#s$kA
1) 全表扫描(Full Table Scans , FTS)
h$[
2) yB*t;?OWHO
通过 ROWID 的表存取(Table Access
by
ROWID 或 rowid lookup )
!******@EZ+B
VO
3) 索引扫描(Index Scan 或index lookup )有4种类型的 索引扫描:ITPUB个人空间/x8@'、'q/{3h:T;IG
(1) 索引唯一扫描(index
unique scan ) ITPUB 个人空间 G
_$e3u5o-pC
( 2) 索引范围扫描( index range scan )
;p
EXRegk-a0 在非唯一索引上都使用索引范围扫
描。使用index rang scan 的3种情况:ITPUB个人空间 Vo/j
_2Q
1'h
(a)
在唯一索引列上使用了 range操作符(> &It; <> >=
<= between ) ITPUB 个人空间 8O$iA?-******@9{ N
(b)
在组合索引上,只使用部分列进行查询,导致查询出多行
6ASCjeg2s
VZ"Y#xO ( c)对非唯一索引列上进行的任何查
询。 -
T
\mmlk:G&pq
(3)
索引全扫描(index full scan )
DOm%] 1xmi3YS0 ( 4) 索引快速扫描(index fast full
scan)
\2N'q j&~ tO 三、表之间的连接
ITPUB 个人空间!}|$JWm2?
1,排序--
合并连接(Sort Merge Join , SMJ)ITPUB 个人空
间:VQ:n_g-J1k#i5丫 i
2,嵌套循环( Nested
Loops , NL) ITPUB 个人空间 o(h LIcdW&F0}{
3,哈希连接( Hash Join , HJ ) -_gP\******@1F;L0 另外,笛卡儿乘积 ( Cartesian Product )
fe~!hV:jM7i0ET$n0 总结 Oracle 连接方法 WZi8VW b ?-y0 8a6n,bv W0 Oracle 执行计划总结概述 ITPUB 个人空间 '] Io*yN.[2?%E}A
+++
一.相关的概念
Rowid 的概念: rowid 是一个伪列,既然是伪列,那么 这个列就不是用户定义,而是系统自己给加上的。 对每个表都有一个 rowid 的伪列,但是表中并不物理存储 ROWID 列的值。不过你可以像使用其它列那样使用它,但 是不能删除改列,也不能对该列的值进行 修改、插入。一旦一行数据插入数据库,则 rowid 在该行的 生命周期内是唯一的,即即使该行产生行迁移,行的 rowid 也不会改变。
8}1b|1f3Y3An0 Recursive
SQL概念:有时为了执行用户发出的一个 sql语句,Oracle
必须执行一些额外的语句,我们将这些额外的语句称之为
''recursive
ca