【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(四)

来源:这里教程网 时间:2026-03-03 16:27:23 作者:

说明 

1.整理了一些本人平时SQL 调优中常用到的一些Hint,方便大家参考

2.Hint相关文章地址:

Oracle Hint之概念与用法: http://blog.itpub.net/69992972/viewspace-2756965/

Oracle Hint之常用Hint功能概述(一): http://blog.itpub.net/69992972/viewspace-2757087/

Oracle Hint之常用Hint功能概述(二): http://blog.itpub.net/69992972/viewspace-2757182/

Oracle Hint之常用Hint功能概述(三): http://blog.itpub.net/69992972/viewspace-2757238/

Oracle Hint之常用Hint功能概述(四): http://blog.itpub.net/69992972/viewspace-2757242/

Oracle Hint之常用Hint功能概述(五): http://blog.itpub.net/69992972/viewspace-2757273/ 未分类Hint(其一)

Hint

功能概述

举例

/*+ append */

该hint让优化器将直接路径(Direct-path)INSERT与INSERT语句的子查询语法一起使用来插入数据( 仅针对insert语句中有子查询而不使用values关键字有效)。注意:1.常规INSERT是串行模式下的默认设置。在串行模式下,仅当包含APPEND HINT时才能使用直接路径2.在并行模式下,默认为直接路径INSERT。 在并行模式下,仅当指定NOAPPEND HINT时,才能使用常规插入3.INSERT是否会被并行执行的决定与APPEND HINT无关4.在直接路径INSERT中,数据被附加到表的末尾,而不是使用当前分配给表的现有空间。结果就是直接路径INSERT可能比常规INSERT快得多 5. 仅INSERT语句的子查询语法支持APPEND HINT,而不支持VALUES子句。 如果使用VALUES子句指定APPEND HINT,则将其忽略并使用常规插入

/*+ append_values   */

该hint让优化器将直接路径INSERT与VALUES子句一起使用( 仅针对insert语句中有values关键字有效)。如果未指定此hint,则使用常规INSERT注意:1.在直接路径INSERT中,数据被附加到表的末尾,而不是使用当前分配给表的现有空间。结果,直接路径INSERT可能比常规INSERT快得多2.该HINT可在下面的两个情况下大大提高性能:(1)在Oracle Call   Interface(OCI)程序中,当使用大型数组绑定或带有行回调的数组绑定时(2)在PL / SQL中,当使用带有带有VALUES子句的INSERT语句的FORALL循环加载大量行时 3. 仅INSERT语句的VALUES子句支持APPEND_VALUES HINT。如果使用INSERT语句的子查询语法指定APPEND_VALUES HINT,则将其忽略,并将使用常规插入

/*+ noappend */

该hint通过在INSERT语句的持续时间内禁用并行模式来让优化器使用常规INSERT。APPEND HINT有提到:常规INSERT是串行模式下的默认设置,而直接路径INSERT是并行模式下的默认设置

/*+ cache(tab) */

该hint让优化器在执行全表扫描时将为表检索的块放在LRU列表中最近使用的缓冲区缓存中。所以该hint对于小型查找表很有用

SELECT /*+ FULL (e) CACHE(e) */ last_name   FROM emp e;

/*+ nocache(tab)   */

该hint让优化器在执行全表扫描时将为表检索的块放在LRU列表中最近最少使用的缓冲区缓存中。 这是缓冲区高速缓存中块的默认方式

SELECT /*+ FULL   (e) NOCACHE(e) */ last_name FROM emp e;

/*+ clustering */

该hint仅对启用了attribute   clustering的表上的INSERT和MERGE操作有效。该hint为直接路径插入(串行或并行)。该hint会覆盖创建或更改表的DDL中的“NO ON LOAD”设置。该hint对未启用attribute clustering的表没有影响

/*+ no_clustering   */

和CLUSTERING HINT一样,该hint仅对启用了attribute clustering的表上的INSERT和MERGE操作有效。但该hint禁用直接路径插入(串行或并行)的属性聚类。该hint将覆盖在创建或更改表的DDL中的“YES ON LOAD”设置。该hint对未启用attribute clustering的表没有影响

/*+   cursor_sharing_exact */

一般在安全的情况下,Oracle可以使用绑定变量替换SQL语句中的常量。此替换由CURSOR_SHARING初始化参数控制。但该hint让优化器关闭此行为。当指定此提示时,Oracle会执行SQL语句,而不会尝试用绑定变量替换常量

相关推荐