You are on page 1of 26

T i u cu l nh Oracl e SQL ph n 1: n n

t ng c b n
T i u cu l nh l ch nng cao, v v y c th hi u c cc ! thu t t i u cu l nh Oracle SQL, ch"ng ta
c n t# hi u # t $ !hi ni # c b n li%n &uan n l'nh v c ny, bi vi t ny !h(ng nh # # c )ch chuy n t i ton
b !i n th c li%n &uan n t i u cu l nh SQL, bi vi t ch trnh by nh ng !hi ni # &uan tr ng nh t, gi"p
nh ng c gi * a# hi u !i n tr"c Oracle c th hi u c+
, n t ng c b n
Tr nh t - l . cu l nh SQL
Oracle Server - l. cu l nh SQL theo trnh t cc b c $au:
1. Open
o ,g # nh !hai bo v !h i t o /ur$or cho cu l nh SQL
2. 0ar$e
o 1i # tra cu l nh * th c hi n tr c ch a, n u c th chuy n $ang th c hi n b c 2
o 0hn t)ch v !i # tra c" php cu l nh SQL
o 1i # tra t)nh h p l v &uy n truy c p n cc i t ng 3 li u cu l nh tha# chi u t i
o 4c nh 5 $ th c thi cu l nh SQL 6 t i u nh t
3. 7i n3
o T# v gn gi tr cho cc bi n38vari abl e n u c
4. 9-ecute
o Th c thi cc b c #( t trong 5$ th c thi cu l nh SQL6
5. :etch
o /huy n ! t &u v n i g i th c thi l nh
6. /l o$e
o ,g # nh ng /ur$or cho cu l nh
Trong cc giai o n - l. tr%n, giai o n 0ar$e chi # nhi u th i gian nh t+
/(ng c t i u cu l nh SQL;0lu$ <=TOT></9
/h c n?ng
Thu th p th(ng tin #( t &u trnh th c thi cu l nh SQL, th ng c 3@ng t i u cu l nh+
/i t
A $ 3 ng y ch c n?ng c a c(ng c ny, c n t o Table t%n 0L<,BT<7L9 v gn nh# &uy n 0L=ST></9 cho
ti !ho n #u n $ 3 ng c(ng c :
1. C@ng DO></L9BEOF9Gr3b#$Ga3#inGutl-plan+$&l t o 0L<,BT<7L9
H+ C@ng ti !ho n C7< ch y #* l nh DO></L9BEOF9G$&lplu$Ga3#inGplu$trce+$&l t o nh# &uy n
0L=ST></9+
I) 3
Quan $t ! t &u t #* 3 n tr%n, ta th y c(ng c <=TOT></9 g i v ba nh# th(ng tin $au:
1+ 1 t &u cu l nh
H+ S trnh t th c thi cu l nh
2+ Th(ng tin th ng !% chi ph) ti nguy%n c n 3@ng th c thi cu l nh
/ch $ 3 ng
/" php l nh J ngh' a
S9T <=TOT></9 O, 7 t t)nh n?ng thu th p v hi n th th(ng tin y
S9T <=TOT></9 O:: T t t)nh n?ng thu th p v hi n th th(ng tin !
S9T <=TOT></9 O, 940L<K, Ei n th ! t &u v 90 cu l nh
S9T <=TOT></9 O, ST<TKSTK/S Ei n th ! t &u v th(ng tin th ng !% cu l nh
S9T <=TOT></9 T></9O,LL Ei n th 90 v th(ng tin th ng !%, !h(ng hi n th ! t &u cu l nh
S9T <=TOT></9 T></9O,LL 940L<K, /h hi n th 90
S9T <=TOT></9 T></9O,LL ST<TKSTK/S /h hi n th th ng !%

S th c thi cu l nh SQL
S th c thi cu l nh SQL M9-ecution 0lan 8 90N #( t th t cc b c Oracle c n th c thi c c ! t &u cu
l nh nhanh nh t+
I) 3 v 90 c a cu l nh -e# 3 li u tr%n hai Table /=STOF9>S v /O=,T>K9S:
Oracle &ui nh th t - l. cc b c c a 90 nh $au:
1+ 7 t u - l. t b c n # th t v ph)a b%n ph i nh t, ti p theo l cc b c ng ! tr c n !
H+ , u hai b c c c@ng th t th $ - l. b c n # ph)a tr%n tr c "
,h v y, ta th y 90 tr%n c - l. theo th t c nh $ b%n ph i+
F t 90 y bao g # ba thnh t $au: ph ng th c truy c p 3 li u, ph ng php OOK, v th t OOK, gi a hai
hay nhi u t p 3 li u+
0h ng th c truy c p 3 l i u
4c nh cch th c truy c p v t l. n t ng 3Png 3 li u c a Table, v) 3u # t $ ph ng php truy c p 3 li u
Table ph bi n:
Truy c p theo cch c t ng 3Png c a Table M T<7L9 <//9SS M:=LLN N: c ton b 3Png 3 li u c a Table
i $nh 3 li u, v v y n u Table c !)ch th c l n th ph ng th c truy c p ny $ chi # nhi u chi ph) "
KO+ Tuy nhi%n, cch truy c p ny cho phQp ch"ng ta c th c u hnh c nhi u !h i 3 li u M7loc!N cho # t
thao tc c v nhi u ti n trnh c@ng c # t l"c+
Truy c p 3 li u cy Kn3e- MK,C94 S/<,N: 3uy t cy Kn3e- theo gi tr !ha c n t#, ! t &u t# c c
l u gi tr >ORKC c a 3Png 3 li u ch a gi tr !ha
Truy c p 3 li u Table theo Kn3e- M T<7L9 <//9SS M7L K,C94 >ORKCNN: ph ng th c truy c p ny bao g #
hai b c tch bi t:
1+ Cuy t cy Kn3e- t# >ORKC t ng ng v i gi tr !ha
H+ A c 3Png 3 li u c a Table theo >ORKC t# c # t cch nhanh nh t
I i cch ny, ta th y c c # t 3Png 3 li u c a Table th ph i t n )t nh t hai thao tc KOS # t thao
tc KO c tr%n cy Kn3e- v # t thao tc KO c tr%n Table+ Theo lu t chung th cch ny th)ch h p !hi ! t
&u 3 li u c n t# )t h n TU !h i l ng 3 li u c a Table+
0h ng php OOK,
4c nh ph ng php ! t h p 3 li u gi a hai hay nhi u Table v i nhau, v) 3 v ph ng php OOK, gi a hai Table
T1 v TH:
1. ,9ST9C LOO0 OOK,: v i T1 l outer8table, TH l inner8table th t ng 3Png 3 li u c a Table T1 $ ! t h p $o "
$nh v i t t c 3Png 3 li u c a Table TH, ! t &u tr v l t t c cc 3Png 3 li u th a i u !i n $o $nh+ #
H+ SO>T F9>V9 OOK,: t p 3Png 3 li u c a hai Table c $ p theo th t tr c !hi ng 3 ng thu t ton !
tr n tr%n ch"ng+
Th t OOK,
4c nh th t OOK, !hi cu l nh SQL c nhi u h n hai Table ! t h p v i nhau, th t OOK, h p l. gi"p gi # thi u
3 li u c n ! t h p v i nhau # v n t c ! t &u "ng+
Sau !hi t# hi u &ua cc !hi ni # c b n, ch"ng ta th &uay l i t# hi u . ngh'a 90 c a cu l nh SQL tr%n:
1+ Oracle ch n ph ng php OOK, l ,9ST9C LOO0 th c hi n phQp OOK, gi a hai Table+
H+ Oracle ch n /=STOF9>S ng vai trP l outer8table, /O=,T>K9S l inner8table
2+ 7 t u c t ng 3Png 3 li u c a /=STOF9>S r i $o tr@ng v i t t c 3Png c a /O=,T>K9S, i # l u . l !
gi tr /O=,T>K9S+/O=,T>LBKC ny c l y t cy Kn3e- /O=,T>LB01
W+ 1 t &u tr v l t t c nh ng 3Png 3 li u th a i u !i n $o tr@ng #
A n y c th cc b n th c # c l t i $ao Oracle l i ch n ph ng php Ooin l ,9ST9C LOO0 X t i $ao /=STOF9>S ! !
l i c ch n l# outer8table X, &uy t nh ch n ny c th c hi n b i Trnh t i u cu l nh Oracle+
Tr nh t i u cu l nh Oracl e
Trnh t i u gi"p Oracle -c nh c # t 90 t t nh t cho # t cu l nh SQL+ Trnh t i u Oracle Yi h tr ph ng $
php t i u 3 a vo c" php l nh M>ule 7a$e3 Opti#iZer >7ON v ph ng php t i u 3 a vo chi ph) c t)nh c n
3@ng th c thi cu l nh M/o$t 7a$e3 Opti#iZer /7ON+ F c nh OracleYi 3@ng >7O+ %
>7O
>7O c t phi%n b n Oracle[, 3 a vo c u tr"c cu l nh SQL -c nh 90 t t nh t+ >7O $ 3 ng # t l c
phn h ng cc ph ng th c truy c p 3 li u ch n ph ng th c truy c p cho 90, ph ng th c no c $ h ng
th p $ c u ti%n ch n+ L c phn h ng cc ph ng th c truy c p 3 li u c &ui nh nh $au: "
Ta th y truy c p theo >ORKC c $ h ng th p nh t l 1S ngh'a l ph ng th c truy c p n 3 li u nhanh nh t, v
truy c p theo Kn3e- c $ h ng l W $ nhanh h n nhi u $o v i truy c p theo :ull8Table8Scan c $ h ng cao nh t l "
1T+
I) 3 $au cho th y >7O $ 3 ng lu t phn h ng ch n ph ng th c truy c p 3 li u cho 90+ Co c t /=STBKC c a
i u !i n RE9>9 c =,KQ=9 K,C94 l%n >7O ch n ph ng th c truy c p theo Kn3e-:
SQL\ C>O0 T<7L9 ne]BtableS

Table 3roppe3+

SQL\ />9<T9 T<7L9 ne]Btable <S
S9L9/T ob^ectBi3, ob^ectBna#e, ob^ectBtype
:>OF allBob^ect$
RE9>9 ro]nu# _` TaaaS H 2 W

Table create3+
SQL\ S9T <=TOT></9 T></9O,LL 940L<K,
SQL\ S9L9/T ; :>OF ne]Btable RE9>9 ob^ectBtype ` bT<7L9bS
9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b,9RBT<7L9b
SQL\ S9T <=TOT></9 O::
SQL\ />9<T9 K,C94 i3-Bob^ectBtype O, ne]BtableMob^ectBtypeNS

Kn3e- create3+
SQL\ S9T <=TOT></9 T></9O,LL 940L<K,
SQL\ S9L9/T ; :>OF ne]Btable RE9>9 ob^ectBtype ` bT<7L9bS
9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M7L K,C94 >ORKCN O: b,9RBT<7L9b
H 1 K,C94 M><,V9 S/<,N O: bKC4BO7O9/TBTL09b M,O,8=,KQ=9N
/7O
/7O c t phi%n b n Oraclec, /7O 3 a vo 5th(ng tin t ng h p6 c c t)nh chi ph) c a 90, 90 t t nh t l 90
c chi ph) c t)nh nh nh t+ OracleYi ch 3@ng /7O t i u n u i t ng tha# chi u n c th(ng tin #( t + #
5Th(ng tin t ng h p6 trong ng c nh ny bao g #:
1+ Th(ng tin v h i u hnh #y ch Oracle: $ /0=, t c c ghi 'a c ng, !)ch th c !h i 3 li u, c
ch &u n l. 'a d
H+ Th(ng tin #( t cc i t ng 3 li u: $ 3Png, c t v !h i 3 li u c a Table, !)ch th c 3Png, chi u cao
v $ n"t l c a cy Kn3e- d
2+ Th(ng tin v cc th(ng $ li%n &uan: opti#iZerB#o3e, 3bBeileB#ultibloc!Brea3Bcount,
parallelBauto#aticBtuning d
, u cung c p y v ch)nh -c cc th(ng tin tr%n, trnh t i u /7O c th -c nh c # t 90 t t nh t+
Ti p theo v) 3 trong ph n >7O, ch"ng ta 3@ng l nh <,<LLf9 T<7L9 thu th p th(ng tin c a ,9RBT<7L9 cho trnh
t i u:
SQL\ S9T <=TOT></9 O::
SQL\ gli ,9RBT<7L9

in3e-e$ on table ,9RBT<7L9U:

T<7L9B,<F9 K,C94BTL09 K,C94B,<F9
88888888888888888888 8888888888 888888888888888888888888888888
,9RBT<7L9 ,O,=,KQ=9 KC4BO7O9/TBTL09

SQL\ <,<LLf9 T<7L9 ne]Btabl e /OF0=T9 ST<TKSTK/SS

Table analyZe3+

SQL\ S9T <=TOT></9 T></9O,LL 940L<K,
SQL\S9L9/T ; :>OF ne]Btable RE9>9 ob^ectBtype ` bT<7L9bS

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9 M/o$t`T /ar3`HTaa 7yte$`1acTaaN
1 a T<7L9 <//9SS M:=LLN O: b,9RBT<7L9b M/o$t`T /ar3`HTaa 7yte$`1acTaaN

Ta th y ! t &u c a 90 c # t $ i # !hc bi t $o v i th i i # tr c !hi thu th p th(ng tin:
1+ / th%# th(ng tin v chi ph) th c hi n c a # i b c l nh: M/o$t`T /ar3`HTaa 7yte$`1acTaaN, i u ny $
ch ng t Oracle hi n ang 3@ng trnh t i u /7O #
H+ /7O ch n ph ng th c truy c p T<7L9 <//9SS M:=LLN # c 3@ c t n t i Kn3e- tr%n c t ob^ectBtype+ %
0h l c
Vi i ngh' a t
7i n38vari abl e: ! thu t vi t #* !h(ng gn gi tr c nh, ! thu t ny gi"p t?ng t)nh $ n $ng, hi u n?ng v b o &
# t cho h th ng Oracle+ I) 3 :
F* !h(ng 3@ng 7in38Iariable
79VK,
=0C<T9 e#ployee$ S9T S<L<>L`S<L<>L h 1aa RE9>9 e#ployeeBi3 ` 1aaS
9,CS
F* 3@ng 7in38Iariable
C9/L<>9
bin3Bvar ,=F79> :` 1aaS
79VK,
=0C<T9 e#ployee$ S9T S<L<>L`S<L<>L h 1aa RE9>9 e#ployeeBi3 ` bin3BvarS
9,CS
Outer8tabl e: t ng 3Png 3 li u c a Table ny $ i $nh v i t t c 3Png c a inner8table, cPn g i l 3riving8table, "
c c p n trong ph ng php ,9ST9C LOO0 OOK,, th ng i chung v i thu t ng inner8table
Knner8tabl e: t t c 3Png 3 li u c a Table ny $ c i $nh v i t ng 3Png c a outer8table+ "
F* l nh
F t $ :ile #* l nh ti n )ch $ 3 ng trong bi vi t:
T%n #* l nh F( t ch c n?ng
li+$&l
Li t !% t t c Kn3e- c a b ng nh p vo
$elect ui+tableBna#e
, 3eco3eMui+in3e-Btype
,b,O>F<Lb, ui+uni&uene$$
,ui+in3e-BtypeN a$ in3e-Btype
, ui+in3e-Bna#e
ero# u$erBin3e-e$ ui
]here ui+tableBna#e li!e upperMbi1+UbN
or3er by ui+tableBna#e
, ui+uni&uene$$ 3e$c
L ch $ thay i
1+ 1aGaHGHaaY 8 Vi i thi u bi vi t
H+ HaGaHGHaaY 8 7 $ung ph n j/(ng c t i u cu l nh: SQL;0lu$ <=TOT></9
Tha# !h o
1. /ch $ 3 ng j7in3 Iariablej !hi l p trnh Oava v i Oracle
2. Ti li u chu n c a Oracle Cataba$e Yi '
3. Ti li u !ha h c Oracle Cataba$e Yi: SQL Tuning

F i cc b n c ph n ti p theo c a ch ny:
0h n H T i u cu l nh SQL c Tabl e v c # t i u !i n
0h n H: T i u cu l nh SQL c # t Tabl e
v c # t i u !i n
Ti p theo 0h n 1: n n t ng c b n t i u cu l nh Oracle SQL S gi i thi u cc !i n th c c b n c n thi t t i u
cu l nh SQL, ch"ng ta b t u i vo t# hi u ! thu t t i u cu l nh c b n nh t, l t i u 3 a vo Kn3e-, c !
th l 7;tree8Kn3e-, lo i Kn3e- th ng c 3@ng nh t+
/h"ng ta ckng c n l u . l Kn3e- ch gi"p t?ng t c truy v n trong # t $ tr ng h p c th , !h(ng ph i b t !
tr ng h p no $ 3 ng Kn3e- ckng gi"p t?ng t c + Trong th c t , ta c th -e# ph n # c l c c a # t cu n
$ch gi ng nh # t c u tr"c Kn3e-S t # c l c cu n $ch, b n $uy ra c $ th t trang $ch ch a n i 3ung b n
c n t#+ , u $ch vi tr?# trang b n c th 3 a vo # c l c t# c n i 3ung #ong #u n # t cch nhanh
chng, nh ng n u $ch ch vi trang th t# theo cch l t t ng trang th l i nhanh h n+ /ch t# theo # c l c gi ng
nh ph ng th c truy c p T<7L9 <//9SS M7L K,C94 >ORKCN, cch t# l t t ng trang $ch gi ng nh ph ng th c
truy c p T<7L9 <//9SS M:=LLN+
0h n hai ny $ t p trung ch y u vo ! thu t t i u cu l nh $ 3 ng Kn3e-, -e# -Qt tr ng h p no Oracle $ " "
3@ng Kn3e- trong cu l nh v ng c l i+ /c v) 3 #inh h a trong bi $ 3@ng Table t%n /=STOF9>S c a ti !ho n "
SE, c u tr"c /=STOF9>S nh $au:
loracleglocalho$t L<7SmD $i3
O></L9BSKC`oraYi
loracleglocalho$t L<7SmD
loracleglocalho$t L<7SmD alia$ $h
alia$ $h`b$&lplu$ j$hG$hjb
loracleglocalho$t L<7SmD $h

SQL;0lu$: >elea$e Y+H+a+W+a 8 0ro3uction on Fon :eb 1[ an:T[:Ha HaaY

/opyright McN 1YnH, HaaH, Oracle /orporation+ <ll right$ re$erve3+


/onnecte3 to:
OracleYi 9nterpri$e 93ition >elea$e Y+H+a+W+a 8 0ro3uction
Rith the 0artitioning an3 Oracle Cata Fining option$
OServer >elea$e Y+H+a+W+a 8 0ro3uction

SQL\ C9S/ cu$to#er$
,a#e ,ullX Type
88888888888888888888888888888888888888888888888888888888888 88888888 888888888888888
/=STBKC ,OT ,=LL ,=F79>
/=STB:K>STB,<F9 ,OT ,=LL I<>/E<>HMHaN
/=STBL<STB,<F9 ,OT ,=LL I<>/E<>HMWaN
/=STBV9,C9> /E<>M1N
/=STBL9<>BO:B7K>TE ,=F79>MWN
/=STBF<>KT<LBST<T=S I<>/E<>HMHaN
/=STBST>99TB<CC>9SS ,OT ,=LL I<>/E<>HMWaN
/=STB0OST<LB/OC9 ,OT ,=LL I<>/E<>HM1aN
/=STB/KTL ,OT ,=LL I<>/E<>HM2aN
/=STBST<T9B0>OIK,/9 I<>/E<>HMWaN
/O=,T>LBKC ,OT ,=LL /E<>MHN
/=STBF<K,B0EO,9B,=F79> I<>/E<>HMHTN
/=STBK,/OF9BL9I9L I<>/E<>HM2aN
/=STB/>9CKTBLKFKT ,=F79>
/=STB9F<KL I<>/E<>HM2aN
/=STBTOT<L I<>/E<>HM1WN

SQL\
/c tr ng h p ng 3 ng Kn3e- !hi t i u cu l nh SQL
Oracle !h(ng 3@ng Kn3e- cho i u !i n $o $nh c ton t _ \, o` v ,OT K,
Th ng ch"ng ta ngh' n u c t 3 li u trong # nh i u !i n c Kn3e-, th cu l nh SQL $ $ 3 ng Kn3e- truy "
v n 3 li u cho nhanh, tuy nhi%n c nhi u tr ng h p 3@ c Kn3e- nh ng Kn3e- v n !h(ng c+ Tr ng h p u
ti%n ch"ng ta -Qt n l i v i cc ton t _\, o` v ,OT K,+
Tr c ti%n, ta !i # tra Table t%n /=STOF9>S hi n ang c nh ng Kn3e- no:
SQL\ gli /=STOF9>S

in3e-e$ on table /=STOF9>SU:

T<7L9B,<F9 K,C94BTL09 K,C94B,<F9
88888888888888888888 8888888888 888888888888888888888888888888
/=STOF9>S =,KQ=9 /=STOF9>SB01
,O,=,KQ=9 /=STB/>9CKTBLKFKTBKC4
/=STB9F<KLBKC4
/=STBL<STB,<F9BKC4
C@ng #* l nh 3ai+$&l -a cc nonpri#ary8!ey, !hi /=STOF9>S ch cPn pri#ary8!ey t%n /=STOF9>SB01 tr%n
c t 3 li u /=STBKC:
SQL\ g3ai
on ]hich table: /=STOF9>S
C>O0 K,C94 /=STOF9>SB01
;
9>>O> at line 1:
O><8aHWHY: cannot 3rop in3e- u$e3 eor eneorce#ent oe uni&ueGpri#ary !ey


SQL\ gli /=STOF9>S

in3e-e$ on table /=STOF9>SU:

T<7L9B,<F9 K,C94BTL09 K,C94B,<F9
88888888888888888888 8888888888 888888888888888888888888888888
/=STOF9>S =,KQ=9 /=STOF9>SB01
4e# cch trnh t i u Oracle - l. b n cu l nh $au:
SQL\ S9T <=TOT></9 T></9O,LL 940L<K,

SQL\ S9L9/T cu$tBeir$tBna#e, cu$tBla$tBna#e
:>OF cu$to#er$
RE9>9 cu$tBi 3 ` 1a2a
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M7L K,C94 >ORKCN O: b/=STOF9>Sb
H 1 K,C94 M=,KQ=9 S/<,N O: b/=STOF9>SB01b M=,KQ=9N



SQL\ S9L9/T cu$tBeir$tBna#e, cu$tBla$tBna#e
:>OF cu$to#er$
RE9>9 cu$tBi 3 _ Haaaa
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M7L K,C94 >ORKCN O: b/=STOF9>Sb
H 1 K,C94 M><,V9 S/<,N O: b/=STOF9>SB01b M=,KQ=9N



SQL\ S9L9/T cu$tBeir$tBna#e, cu$tBla$tBna#e
:>OF cu$to#er$
RE9>9 cu$tBi 3 bet]een caaaa an3 naaaa
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M7L K,C94 >ORKCN O: b/=STOF9>Sb
H 1 K,C94 M><,V9 S/<,N O: b/=STOF9>SB01b M=,KQ=9N


SQL\ S9L9/T cu$tBeir$tBna#e, cu$tBla$tBna#e
:>OF cu$to#er$
RE9>9 cu$tBi 3 _\ 1a2a
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb

SQL\
,hn vo ! t &u cc cu l nh, ta th y trnh t i u Oracle ang c ch nh gi tr l Opti#iZer`/EOOS9, ngh'a l
$ ch n /7O n u /=STOF9>S c th(ng tin #( t v ch n >7O n u !h(ng c+ F c nh /=STOF9>S !h(ng c th(ng " %
tin #( t , v v y trong tr ng h p ny trnh t i u $ 3@ng ph ng php >7O -c nh 90 cho cc cu l nh+ "
,h t# hi u trong ph n tr c, >7O $ 3 ng l c lu t phn h ng ch n 90 t t nh t, u ti%n ch n ph ng
th c truy c p 3 li u theo Kn3e- h n l ph ng th c 3uy t t ng 3Png 3 li u c a Table+ ,h ng theo v) 3 tr%n, ta
th y >7O ch 3@ng Kn3e- cho 2 cu l nh u ti%n, !h(ng 3@ng Kn3e- cho cu l nh cu i c@ng+ A . th ta th y ba cu
l nh u $ 3 ng ton t $o $nh `, _ v 79TR99, <,C, cc ton t ny u c !huynh h ng gi i h n t p 3
li u tr v , cPn cu l nh th t th $ 3 ng ton t _\, ton t ny lu(n tr v t p ! t &u l n+ ,h v y, Oracle
>7O ng - nh v y l h p l., 3@ng Kn3e- cho cu l nh $ 3 ng ton t $o $nh c !huynh h ng tr v )t 3 li u
v !h(ng 3@ng Kn3e- cho tr ng h p cu l nh c ton t $o $nh tr v nhi u 3 li u+
>7O $ ng - t ng t nh " _\ cho cc ton t o` v ,OT K,+

Oracle !h(ng 3@ng Kn3e- cho c t 3 l i u ! t h p v i b t ! thnh ph n !hc
C@ c t 3 li u c Kn3e-, nh ng n u ta ! t h p n v i b t ! thnh ph n no !hc, ch ng h n nh # t gi tr , # t (
bi u th c th Kn3e- tr%n c t 3 li u $ !h(ng c trnh t i u Oracle ng 3@ng+ 4e# -Qt cc v) 3 3 i y: "
SQL\ S9L9/T ;
H :>OF cu$to#er$
2 RE9>9 cu$tBi3 h 1 ` 1aaS

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb



SQL\ S9L9/T ;
H :>OF cu$to#er$
2 RE9>9 TOB,=F79>Mcu$tBi 3N ` 1aaS

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb



SQL\ S9L9/T ;
H :>OF cu$to#er$
2 RE9>9 cu$tBi3 h nul l ` 1aaS

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb


SQL\ S9L9/T ;
H :>OF cu$to#er$
2 RE9>9 cu$tBi3 ` 1aaS

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M7L K,C94 >ORKCN O: b/=STOF9>Sb
H 1 K,C94 M=,KQ=9 S/<,N O: b/=STOF9>SB01b M=,KQ=9N

SQL\
Ta th y ba tr ng h p u ti%n, 3@ c t 3 li u ! t h p v i gi tr ,=LL , gi tr r ng, ckng !hi n Oracle >7O !h(ng $
ng 3 ng Kn3e- cho cu l nh+ A i v i tr ng h p TOB,=F79>Mcu$tBi3N th 3o h# TOB,=F79> ! t bu c v i c t
/=STBKC n%n l# # t tc 3 ng c a Kn3e-, tuy nhi%n ch"ng ta c th $ 3 ng ! thu t euncti on8ba$e3 Kn3e-S t o
Kn3e- tr c ti p tr%n h# ! t bu c vo c t 3 li u, th c hi n ph ng th c truy c p 3 li u theo Kn3e- # !h(ng
c n b h# TOB,=F79>MN+ #

SQL\ />9<T9 K,C94 cu$tBi3Btonu#berBi3- O, cu$to#er$MtoBnu#berMcu$tBi3NNS

Kn3e- create3+


SQL\ gli

in3e-e$ on table /=STOF9>SU:

T<7L9B,<F9 K,C94BTL09 K,C94B,<F9
88888888888888888888 8888888888 888888888888888888888888888888
/=STOF9>S =,KQ=9 /=STOF9>SB01
,O,=,KQ=9 /=STB/>9CKTBLKFKTBKC4
:=,/TKO,87 /=STBKCBTO,=F79>BKC4
<S9C ,O>F<
L


SQL\ S9T <=TOT></9 T></9O,LL 940L<K,

SQL\ S9L9/T ;
H :>OF cu$to#er$
2 RE9>9 toBnu#berMcu$tBi3N ` 1aaS

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb



SQL\ <,<LLf9 T<7L9 cu$to#er$ /OF0=T9 ST<TKSTK/SS

Table analyZe3+

SQL\ S9L9/T ;
H :>OF cu$to#er$
2 RE9>9 toBnu#berMcu$tBi3N ` 1aaS

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9 M/o$t`H /ar3`1 7yte$`12cN
1 a T<7L9 <//9SS M7L K,C94 >ORKCN O: b/=STOF9>Sb M/o$t`H /ar3`1 7yte$`12cN
H 1 K,C94 M><,V9 S/<,N O: b/=STBKCBTO,=F79>BKC4b M,O,8=,KQ=9N M/o$t`1 /ar3`1N


SQL\
,h ta th y, ch trnh t i u /7O # i hi u ! thu t :unction8ba$e3 Kn3e-, >7O !h(ng hi u+ I v y, trnh t i u
Oracle t ng 3@ng /7O th ch"ng ta c n thu th p th(ng tin #( t cho /=STOF9>S+
L u . th%# v cch thu th p th(ng tin #( t cho Table, ch"ng ta $ 3 ng c" php l nh <,<LLf9 T<7L9 v l nh ny
n gi n, 3 hi u v c" php trong $ng, p ng cho cc #inh h a c a ch"ng ta+ 1hi ng 3 ng thu th p th(ng )
tin cho h th ng Oracle th c t , cc b n n%n 3@ng gi l nh C7FSBST<TS th hi u &u h n+
Oracle Kn3e- v ton t LK19
A #inh h a cho . ny, ch"ng ta $ t o th%# # t Kn3e- tr%n c t 3 li u /=STBL<STB,<F9 theo #* l nh " ci+$&l:
SQL\ gci
on ]hich table : /=STOF9>S
on ]hich colu#nM$N: cu$tBla$tBna#e

/reating in3e- on: /=STOF9>S cu$tBla$tBna#e
9nter value eor in3e-Bna#e: cu$tBla$tBna#eBi3-

SQL\ gli /=STOF9>S

in3e-e$ on table /=STOF9>SU:

T<7L9B,<F9 K,C94BTL09 K,C94B,<F9
88888888888888888888 8888888888 888888888888888888888888888888
/=STOF9>S =,KQ=9 /=STOF9>SB01
,O,=,KQ=9 /=STB/>9CKTBLKFKTBKC4
:=,/TKO,87 /=STBKCBTO,=F79>BKC4
<S9C ,O>F<
L

,O,=,KQ=9 /=STBL<STB,<F9BKC4
Ti p theo, ch"ng ta -Qt v) 3 $au:
SQL\ S9T <=TOT></9 T></9O,LL 940L<K,

SQL\ S9L9/T cu$tBi3
H :>OF cu$to#er$
2 RE9>9 cu$tBla$tBna#e LK19 b SUb
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M7L K,C94 >ORKCN O: b/=STOF9>Sb
H 1 K,C94 M><,V9 S/<,N O: b/=STBL<STB,<F9BKC4b M,O,8=,KQ=9N



SQL\ S9L9/T cu$tBla$tBna#e
H :>OF cu$to#er$
2 RE9>9 cu$tBla$tBna#e LK19 b USUp
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb


SQL\ S9L9/T cu$tBi3
H :>OF cu$to#er$
2 RE9>9 cu$tBla$tBna#e LK19 b USb
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb

SQL\
,h v y, trnh t i u Oracle >7O ch ng 3 ng Kn3e- cho ton t LK19 n u gi tr $o $nh !h(ng c !) t c bi t % U
u+
/h"ng ta -Qt ti p v) 3 $au:
SQL\ S9L9/T cu$tBl a$tBna#e
H :>OF cu$to#er$
2 RE9>9 cu$tBl a$tBna#e l i !e b SUb
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a K,C94 M><,V9 S/<,N O: b/=STBL<STB,<F9BKC4b M,O,8=,KQ=9N

SQL\
/c b n th y i # !hc bi t y ch X 90 !h(ng c b c l nh T<7L9 <//9SS M7L K,C94 >ORKCN nh bnh
th ng, # ch c K,C94 M><,V9 S/<,N+
,guy%n nhn 3o c t 3 li u ! t &u tr v ch c /=STBL<STB,<F9, # 3 li u ny ch)nh l gi tr !ha c a Kn3e-
t%n /=STBL<STB,<F9BKC4, v v y Oracle ch c n 3uy t cy Kn3e- l c th l y c ! t &u #ong #u n, !h(ng c n
t n th%# chi ph) 3uy t Table nh bnh th ng+
Ti p t c v i v) 3 $au:

SQL\ S9L9/T cu$tBla$tBna#e
H :>OF cu$to#er$
2 RE9>9 cu$tBi3 LK19 bcUb
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb

SQL\
/c b n c on ra c l. 3o t i $ao trnh t i u Oracle >7O !h(ng ng 3@ng Kn3e- tr%n c t 3 li u /=STBKC X Co
/=STBKC l c t 3 li u !i u $ , nh ng cu l nh l i $o $nh v i # t gi tr chu i qcUp, n%n trong tr ng h p ny $
Oracle t ng ng # nh chuy n i !i u cho # nh i u !i n thnh nh $au:
SQL\ S9L9/T cu$tBla$tBna#e
H :>OF cu$to#er$
2 RE9>9 TOB/E<>Mcu$tBi 3N LK19 b cUb
Co c t 3 li u /=STBKC b ! t bu c v i h# TOB/E<>MN !hi $o $nh, n%n b # t tc 3 ng Kn3e-+
T# t t nh ng . ch"ng ta * t# hi u c trong ph n ny: !
1. Oracle ch ng 3 ng Kn3e- cho ton t LK19 !hi gi tr $o $nh !h(ng c !) t U u
H+ , u ! t &u 3 li u c a cu l nh c th t# th y trong Kn3e-, th Oracle ch c n 3uy t cy Kn3e- l y
! t &u tr v , # !h(ng c n 3uy t tr%n Table+
2+ , u c t 3 li u trong # nh i u !i n $o $nh v i # t gi tr !hc !i u, Oracle t ng chuy n i !i u
ng # nh cho c t 3 li u , i u ny !hi n Kn3e- !h(ng c ng 3 ng+
Oracle Kn3e- v gi tr ,=LL
Theo !i n tr"c c $ 3 li u Oracle, c u tr"c cy Kn3e- ,7;tree8Kn3e-, !h(ng l u th(ng tin v 3Png 3 li u c a Table
c gi tr !ha l ,=LL+ I y theo b n, Oracle $ ng - th no !hi $o $nh i u !i n tr%n c t 3 li u c gi tr "
,=LL X ch"ng ta $ t# hi u . ny ngay trong ph n 3 i y+ "
A chu n b cho ph n ny, ch"ng ta c p nh t # t $ gi tr c a c t 3 li u /=STB9F<KL v ,=LL v t o Kn3e- t%n '
/=STB9F<KLBKC4 tr%n c t ny+
SQL\ S9T <=TOT></9 O::

SQL\ =0C<T9 cu$to#er$
H S9T cu$tBe#ail ` null
2 RE9>9 ro]nu# _ 1a1
G
1aa ro]$ up3ate3+

SQL\ /OFFKTS

/o##it co#plete+

SQL\ gci
on ]hich table : /=STOF9>S
on ]hich colu#nM$N: /=STB9F<KL

/reating in3e- on: /=STOF9>S /=STB9F<KL
9nter value eor in3e-Bna#e: /=STB9F<KLBKC4

SQL\ S9T <=TOT></9 T></9O,LL 940L<K,

SQL\ S9L9/T cu$tBe#ail
H :>OF cu$to#er$
2 RE9>9 cu$tBe#ail KS ,=LL
G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb

SQL\
Theo v) 3 tr%n, Oracle * !h(ng 3@ng Kn3e- 3@ c t /=STB9F<KL c Kn3e-+ Vi i th)ch cho cch ng - ny l 3o
7;tree8Kn3e- !h(ng l u th(ng tin v 3Png 3 li u ch a gi tr !ha l ,=LL, v v y Oracle ph i th c hi n &uQt t ng
3Png 3 li u c a Table t# c cc /=STB9F<KL c gi tr ,=LL+
I y cc b n th -e# ti p v) 3 $au, t i $ao Oracle v n !h(ng 3@ng Kn3e- X
SQL\ S9T <=TOT></9 T></9O,LL 940L<K,

SQL\ S9L9/T cu$tBi3
H :>OF cu$to#er$
2; RE9>9 cu$tBe#ail KS ,OT ,=LL
SQL\ G

9-ecution 0lan
8888888888888888888888888888888888888888888888888888888888
a S9L9/T ST<T9F9,T Opti#iZer`/EOOS9
1 a T<7L9 <//9SS M:=LLN O: b/=STOF9>Sb

SQL\
, u Oracle 7;tree8Kn3e- !h(ng l u gi tr ,=LL, v y !hi t# gi tr !hc ,=LL th theo $uy lu n bnh th ng Oracle
ph i 3@ng Kn3e- trong tr ng h p ny X 1h(ng nh v y, Oracle 5ngh'6 r ng i u !i n KS ,OT ,=LL $ tr v t p ! t "
&u l n, n u 3@ng Kn3e- $ !h(ng hi u &u , n%n Oracle ch n ph ng th c truy c p 3 li u T<7L9 <//9SS M:=LLN $ " "
hi u &u h n+
0h l c
F* l nh
F t $ :ile #* l nh ti n )ch $ 3 ng trong bi vi t:
T%n #* l nh F( t ch c n?ng
li+$&l
Li t !% t t c Kn3e- c a b ng nh p vo
$elect ui+tableBna#e
, 3eco3eMui+in3e-Btype
,b,O>F<Lb, ui+uni&uene$$
,ui+in3e-BtypeN a$ in3e-Btype
, ui+in3e-Bna#e
ero# u$erBin3e-e$ ui
]here ui+tableBna#e li!e upperMbi1+UbN
or3er by ui+tableBna#e
, ui+uni&uene$$ 3e$c
3ai+$&l
4a h t t t c non8pri#ary !ey Kn3e- tr%n # t c t 3 li u nh p vo c a # t Table
accept T<7L9B,<F9 pro#pt j on ]hich table: j
$et ter#out oee
$tore $et $ave3B$etting$ replace
$et hea3ing oee veriey oee autotrace oee eee3bac! oee
$pool 3oit+$&l
$elect bC>O0 K,C94 brrui+in3e-Bna#errbSb
ero# u$erBin3e-e$ ui
]here tableBna#e li!e upperMbiT<7L9B,<F9+UbN
G
$pool oee
$et ter#out on
g3oit
g$ave3B$etting$
un3ee T<7L9B,<F9
$et ter#out on
ci+$&l
T o # i # t ,on8=ni&ue Kn3e- tr%n # t c t 3 li u nh p vo c a # t Table
accept T<7L9B,<F9 pro#pt j on ]hich table : j
raccept /OL=F,B,<F9 pro#pt j on ]hich colu#nM$N: j
$et ter#out oee
$tore $et $ave3B$etting$ replace
$et hea3ing oee eee3bac! oee autotrace oee
$et veriey oee ter#out on
$elect b/reating in3e- on: b
, biiT<7L9B,<F9b
, bii/OL=F,B,<F9b
:>OF C=<L
G
create in3e- iK,C94B,<F9 on iT<7L9B,<F9Mi/OL=F,B,<F9N
G
g$ave3B$etting$
$et ter#out on
un3ee K,C94B,<F9
un3ee T<7L9B,<F9
un3ee /OL=F,B,<F9

You might also like