`

[转]Hint用法概述

阅读更多
1. /*+ALL_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
例如:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;
2. /*+FIRST_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
例如:
SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;


3. /*+CHOOSE*/
表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;
表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;
例如:
SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;

4. /*+RULE*/
表明对语句块选择基于规则的优化方法.
例如:
SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;

5. /*+FULL(TABLE)*/
表明对表选择全局扫描的方法.
例如:
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO=’SCOTT’;

6. /*+ROWID(TABLE)*/
提示明确表明对指定表根据ROWID进行访问.
例如:
SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID>=’AAAAAAAAAAAAAA’
AND EMP_NO=’SCOTT’;

7. /*+CLUSTER(TABLE)*/
提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效.
例如:
SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS
WHERE DPT_NO=’TEC304′ AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

8. /*+INDEX(TABLE INDEX_NAME)*/
表明对表选择索引的扫描方法.
例如:
SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX=’M';

9. /*+INDEX_ASC(TABLE INDEX_NAME)*/
表明对表选择索引升序的扫描方法.
例如:
SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO=’SCOTT’;

10. /*+INDEX_COMBINE*/
为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.
例如:
SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS
WHERE SAL<5000000 AND HIREDATE

11. /*+INDEX_JOIN(TABLE INDEX_NAME)*/
提示明确命令优化器使用索引作为访问路径.
例如:
SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE
FROM BSEMPMS WHERE SAL<60000;

12. /*+INDEX_DESC(TABLE INDEX_NAME)*/
表明对表选择索引降序的扫描方法.
例如:
SELECT /*+INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';

13. /*+INDEX_FFS(TABLE INDEX_NAME)*/
对指定的表执行快速全索引扫描,而不是全表扫描的办法.
例如:
SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305';

14. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/
提示明确进行执行规划的选择,将几个单列索引的扫描合起来.
例如:
SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='SCOTT' AND DPT_NO='TDC306';

15. /*+USE_CONCAT*/
对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询.
例如:
SELECT /*+USE_CONCAT*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';

16. /*+NO_EXPAND*/
对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展.
例如:
SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';

17. /*+NOWRITE*/
禁止对查询块的查询重写操作.

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

19. /*+MERGE(TABLE)*/
能够对视图的各个查询进行相应的合并.
例如:
SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET 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;

20. /*+NO_MERGE(TABLE)*/
对于有可合并的视图不再合并.
例如:
SELECT /*+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*/
根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接.
例如:
SELECT /*+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)*/
将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.
例如:
SELECT /*+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)*/
将指定的表与其他行源通过合并排序连接方式连接起来.
例如:
SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

24. /*+USE_HASH(TABLE)*/
将指定的表与其他行源通过哈希连接方式连接起来.
例如:
SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

25. /*+DRIVING_SITE(TABLE)*/
强制与ORACLE所选择的位置不同的表进行查询执行.
例如:
SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;

26. /*+LEADING(TABLE)*/
将指定的表作为连接次序中的首表.

27. /*+CACHE(TABLE)*/
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
例如:
SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;

28. /*+NOCACHE(TABLE)*/
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
例如:
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;

29. /*+APPEND*/
直接插入到表的最后,可以提高速度.
insert /*+append*/ into test1 select * from test4 ;

30. /*+NOAPPEND*/
通过在插入语句生存期内停止并行模式来启动常规插入.
insert /*+noappend*/ into test1 select * from test4 ;
转自 http://zhidao.baidu.com/question/184050017.html
分享到:
评论

相关推荐

    Oracle hint的用法

    - **用途**:强制使用簇扫描访问方法,仅适用于簇对象。 - **示例**: ```sql SELECT /*+CLUSTER*/ BSEMPMS.EMP_NO, DPT_NO FROM BSEMPMS, BSDPTMS WHERE DPT_NO = 'TEC304' AND BSEMPMS.DPT_NO = BSDPTMS.DPT_...

    Oracle中hint的理解篇

    #### 三、Hint的使用方法 1. **语法格式**:`{DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] [hint [text]] */` - `hint` 是具体的提示关键字。 - `text` 可以包含额外的信息或者注释。 2. **示例**: - 指定...

    oracle hint 语句优化

    Oracle数据库提供了多种工具和技术来帮助开发者优化SQL语句,其中一种常用的方法是使用Hint。 **Hint**是一种特殊的注释,可以指导Oracle优化器在解析SQL语句时采取特定的执行策略或计划。通过这种方式,开发者可以...

    Oracle Hint的用法

    1. **过度使用Hint可能导致性能下降**:虽然Hint可以在某些情况下提高查询性能,但如果过度依赖Hint可能会导致优化器无法正确评估最佳执行计划,从而导致性能问题。 2. **版本兼容性问题**:不同的Oracle数据库版本...

    Delphi的Hint

    本文将详细介绍Delphi中Hint的基本用法、自定义设置以及实现透明提示窗口的原理。 #### 二、基本用法 1. **启用Hint:** - 在Delphi中,默认情况下,Hint功能是关闭的。要启用它,需要在窗体或控件的创建过程中...

    实战Oracle SQL调优 hint特性

    #### 一、Oracle SQL Hint概述 **Hint**是Oracle数据库提供的一种特殊语法,允许用户通过在SQL语句中插入特定的指令来直接影响SQL执行的方式。Hint的设计初衷更多是为了帮助DBA进行性能调优、问题诊断等工作,而...

    IBM Informix Dynamic Server 优化器概述.pdf

    优化器提示(Hint)是给优化器提供额外指令的一种机制,它允许开发者或数据库管理员影响查询优化过程。通过在SQL语句中指定提示,可以指导优化器选择特定的索引或连接方法,或者指示优化器忽略某些统计信息。虽然...

    mp4文件格式解析

    #### 一、MP4文件格式概述 MP4是一种非常流行的多媒体容器格式,广泛用于存储视频、音频以及其他媒体数据。它由国际标准化组织(ISO)和国际电工委员会(IEC)联合制定,是MPEG-4 Part 14的一部分。MP4之所以受到...

    一种利用HPI接口调试多片DSP的方法

    传统的调试方法,如使用JTAG接口,存在一定的局限性,特别是对于含有多个DSP的系统而言。本文将详细介绍如何利用HPI(Host Port Interface)接口来简化这一过程。 #### 背景知识 - **DSP系统软件开发**:通常包括...

    Darwin streaming server 6.0.3安装方法

    ### Darwin Streaming Server 6.0.3 安装方法详解 #### 一、概述 Darwin Streaming Server(DSS)是Apple开发的一款流媒体服务器软件,它可以用来分发H.264视频和AAC音频流。DSS 6.0.3版本提供了强大的功能和稳定...

    SUPTOOL CONV - Convert HEX DUMP or BLOCKDUMP to readable form (Doc ID 47419.1)

    #### 使用方法: 目前,SUPTOOL CONV仅可通过Oracle的WebIV平台上的工具页面获取和使用。具体步骤如下: 1. 访问指定URL:`http://webiv.oraclecorp.com/cgi-bin/webiv/do.pl/CAT:conv` 2. 提供待转换的数据。 3. ...

    OREACL数据库\Oracle性能调优基础篇.

    #### 八、Oracle Hint使用方法与原则 - **Hint**:使用Hint可以在SQL语句中直接指导Optimizer如何执行查询,从而达到优化的目的。 #### 九、使用SQL Trace与TKPROF工具 - **SQL Trace**:SQL Trace记录SQL语句的...

    Android Layout

    ### Android Layout 概述 Android应用的界面设计主要依赖于布局(Layout)的概念。布局是用于组织和呈现用户界面(UI)元素的重要组成部分。Android提供了多种布局类型以满足不同的UI设计需求。 #### 布局类型 - **...

    C++Builder 6常用组件的使用

    本文将详细介绍C++Builder 6 中一些常用的组件及其使用方法,包括Form窗体组件、常用组件、公用对话框组件、Timer组件以及组件的焦点事件和使用技巧。 #### Form窗体组件 **1.1 生成Form窗体** C++Builder 提供了...

    三维可视化课程实验——OpenGL部分.docx

    #### 一、概述 本实验主要涉及三维图形学中的OpenGL编程技术,重点在于理解和实现基本的三维图形变换,包括但不限于旋转等操作。通过本实验的学习,能够掌握OpenGL的基本原理及应用方法,并能够利用OpenGL进行简单...

Global site tag (gtag.js) - Google Analytics