渐行渐远这个网名,用了好多年了, 非常喜欢. 童年远了. 梦想远了.

常见Oracle HINT的用法(转载)

上一篇 / 下一篇  2008-01-19 16:55:51 / 个人分类:SQL.开发.函数

1. /*+ALL_ROWS*/
Z.Q4rvq}Fr0表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
1^"v'?,HO?0?M#z0例如:
O^h,k2T _0SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; ITPUB个人空间'Yt+j#xcu|
2. /*+FIRST_ROWS*/ITPUB个人空间#etya*_3rZ R2Y9E
表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
HqMwg;{,Y;nq0例如:ITPUB个人空间S$t5SoJ0AiI1h'j
SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; ITPUB个人空间,n,\0h"A9c
3. /*+CHOOSE*/
cw,s2y2~;A:Y7j X/J0表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;
({hWuXE&]U!PG E0表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;ITPUB个人空间"L TzX9U
例如:
m~m?&p!s H\S0SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';

4. /*+RULE*/
D#\ Se]bA J,m4f.U0表明对语句块选择基于规则的优化方法.ITPUB个人空间,R d q3X\$g$i!p i
例如:ITPUB个人空间Y{~ k/n MmdQ_3Q
SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; bitscn.com

5. /*+FULL(TABLE)*/
+y$Lu4eq [0表明对表选择全局扫描的方法.
!X?u `W7a0例如:ITPUB个人空间!OZC CC^#Gs
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT'; BBS.bitsCN.com网管论坛

6. /*+ROWID(TABLE)*/ITPUB个人空间%V6tnB@ j
提示明确表明对指定表根据ROWID进行访问.ITPUB个人空间,i$H&`$jN@@
例如:ITPUB个人空间X!g'Eg|O'k4Z
SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID>='AAAAAAAAAAAAAA'ITPUB个人空间bh'reiJw1a
AND EMP_NO='SCOTT'; BBS.bitsCN.com网管论坛

7. /*+CLUSTER(TABLE)*/
r:A1m,nqg|~#@0提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效.ITPUB个人空间jf EQ(gi__m.r&q
例如:ITPUB个人空间Qy!hv$?(W0~
SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMSITPUB个人空间9j8h kP;y(Qwp0Y
WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

8. /*+INDEX(TABLE INDEX_NAME)*/
ImxQ Wa T0表明对表选择索引的扫描方法.ITPUB个人空间AWp+E3I}4_
例如:
_O)h9`GJNSd0SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX='M'; bitscn.com

9. /*+INDEX_ASC(TABLE INDEX_NAME)*/
7G7XWcQ"I)_4o0表明对表选择索引升序的扫描方法.
L;P ~W-G5n5q0例如:ITPUB个人空间f3Ck$i*ol
SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';

10. /*+INDEX_COMBINE*/ITPUB个人空间#K'_ juv3Y~2NY
为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.ITPUB个人空间TW2l:[&y5T
例如:ITPUB个人空间^.k8j;s]I'a
SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMSITPUB个人空间%pw8s HPe$KK Ll
WHERE SAL<5000000 AND HIREDATE

11. /*+INDEX_JOIN(TABLE INDEX_NAME)*/ITPUB个人空间 ^s5O |0E|9C
提示明确命令优化器使用索引作为访问路径.
s!E V w7t/s%f0例如:
JJ-J/ip'~ Q0SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATEITPUB个人空间m4MH]uk+C#j
FROM BSEMPMS WHERE SAL<60000;

12. /*+INDEX_DESC(TABLE INDEX_NAME)*/ITPUB个人空间iB6BC AY2q!\
表明对表选择索引降序的扫描方法.ITPUB个人空间+U8X dTDB Yi
例如:ITPUB个人空间;hFJ*KZ-M?#|sB8J
SELECT /*+INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';

13. /*+INDEX_FFS(TABLE INDEX_NAME)*/ITPUB个人空间8S^ H,l a E6C\
对指定的表执行快速全索引扫描,而不是全表扫描的办法.ITPUB个人空间 y Xs'b$~
例如:
'b+TYy'~R a/o0SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305'; 中国网管论坛

14. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/ITPUB个人空间:S*|?^kd Ur8p
提示明确进行执行规划的选择,将几个单列索引的扫描合起来.
#i+U'jo"N%u0例如:ITPUB个人空间Rb`nV*~F
SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='SCOTT' AND DPT_NO='TDC306'; www_bitscn_com

15. /*+USE_CONCAT*/
z4_'P0VR!b'h;h z0对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询.ITPUB个人空间5f)`Q2EMY!n
例如:ITPUB个人空间/}h9A2l%\&n1L
SELECT /*+USE_CONCAT*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';

16. /*+NO_EXPAND*/ITPUB个人空间.VnEu9i2c*x
对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展.
F!Z;`"@ U6e)v0例如:ITPUB个人空间_fi)O-be~K z
SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M'; 中国网管论坛

17. /*+NOWRITE*/
0I*|\D%@Q[0禁止对查询块的查询重写操作.

18. /*+REWRITE*/
"movgU5F0可以将视图作为参数.

19. /*+MERGE(TABLE)*/
M6N-T @ mfXM0能够对视图的各个查询进行相应的合并.ITPUB个人空间!n0{ G/]{e7J4^
例如:
yS6Mc+[;?BYp@M0SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO
pNQ-a,Rh0,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NOITPUB个人空间-_*kH5Y6qj{6\
AND A.SAL>V.AVG_SAL;

20. /*+NO_MERGE(TABLE)*/
V*W+J*kw0对于有可合并的视图不再合并.ITPUB个人空间tjj DW `~
例如:
!H7F6y }K8Ab#@!s0SELECT /*+NO_MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELECT DPT_NO,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SAL>V.AVG_SAL;

21. /*+ORDERED*/ITPUB个人空间7lPx fPKG-tIbN
根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接.
v5}){5k'u'Ape0例如:
#m2?/T^5[WO0SELECT /*+ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;

22. /*+USE_NL(TABLE)*/
p/f+Mc^X2wg0将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.ITPUB个人空间Hl!s#Q$gy`6?0\s)lM{-\f
例如:
A K` z0o3ZF0SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

23. /*+USE_MERGE(TABLE)*/
1lwB5l.f(I|0将指定的表与其他行源通过合并排序连接方式连接起来.ITPUB个人空间.zQL"o4W\
例如:ITPUB个人空间 K*G$V2X.H,Y5o6J+[
SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 中国网管论坛

24. /*+USE_HASH(TABLE)*/
o!Q&f_9c:[[0将指定的表与其他行源通过哈希连接方式连接起来.ITPUB个人空间ruAlq
例如:ITPUB个人空间 he? x0n&JW;l{
SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO; 中国网管联盟

25. /*+DRIVING_SITE(TABLE)*/ITPUB个人空间 pja#{;o|}
强制与ORACLE所选择的位置不同的表进行查询执行.ITPUB个人空间 t'\%k`m,_2r
例如:
qFZc+x0SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO; bitscn.com

26. /*+LEADING(TABLE)*/
1v owu T8HFs6Z0将指定的表作为连接次序中的首表. DL.bitsCN.com网管软件下载

27. /*+CACHE(TABLE)*/
u!S2X@:Dq`!h._]0当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
7?]8p*b]-j6m yf0例如:
@B)s,C!c*O7r0SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS; bbs.bitsCN.com

28. /*+NOCACHE(TABLE)*/ITPUB个人空间B,MZ9U5|M
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
Um;o"~xU6e0例如:ITPUB个人空间-I#WQl#i2f
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS; 中国网管论坛

29. /*+APPEND*/
&W8^jQ,g Mr0直接插入到表的最后,可以提高速度.ITPUB个人空间]*Gcv jL_ d
insert /*+append*/ into test1 select * from test4 ; bitsCN.Com

30. /*+NOAPPEND*/ITPUB个人空间:|!d1c)Ftt;Q
通过在插入语句生存期内停止并行模式来启动常规插入.
E3IV1m(A/A0insert /*+noappend*/ into test1 select * from test4 ;


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-07-25  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 1386
  • 日志数: 18
  • 图片数: 2
  • 文件数: 2
  • 建立时间: 2007-12-12
  • 更新时间: 2008-06-12

RSS订阅

Open Toolbar