千家信息网

oracle常用hint是怎样的

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,oracle常用hint是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1./*+ ALL_ROWS */希望优化
千家信息网最后更新 2025年11月07日oracle常用hint是怎样的

oracle常用hint是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1./*+ ALL_ROWS */
希望优化程序给出一种尽快得到全部记录的执行计划,目标是增加系统的吞吐量。

2./*+ FIRST_ROWS(n) */
希望优化程序给出一种可以迅速的得到第一行的执行计划,目标是减少系统的响应时间。

3./*+ FULL(TABLE)*/
表明对表选择全局扫描的方法.


4./*+ INDEX(TABLE INDEX_NAME) */
表明对表选择索引的扫描方法.


5./*+ INDEX_ASC(TABLE INDEX_NAME)*/
表明对表选择索引升序的扫描方法.


6./*+ INDEX_DESC(TABLE INDEX_NAME)*/
表明对表选择索引降序的扫描方法.


7./*+ INDEX_COMBINE*/
从索引中取得ROWID信息,通过BITMAP CONVERSION FROM ROWIDS转换成位图,再通过BITMAP AND把多个位图信息
组合并匹配,得到的位图信息再经过BITMAP CONVERSION TO ROWIDS转换成ROWID,然后访问表或者直接返回数据。

8./*+ INDEX_JOIN(TABLE INDEX_NAME1 INDEX_NAME2) */
index_join的工作原理:
index_join的前提条件是查询的数据都可以用索引中得到,Oracle通过hash index join方式对索引
数据进行处理并直接返回,从而避免了对表的访问。index_join使用的索引可以是唯一索引,也可以是多列索引。
index_join的限制条件:
1.查询的数据都可以用索引中得到。
2.谓词条件中不能存在非索引列的谓词

9. /*+ INDEX_FFS(TABLE INDEX_NAME) */
index fast full scan使用多块读的方式读取索引块,产生db file scattered reads 事件,读取时高效,但为无序读取。
index full scan使用单块读方式有序读取索引块,产生db file sequential reads事件,当采用该方式读取大量索引全扫描,效率低下

10./*+ INDEX_SS(T T_IND) */
从9i开始,oracle引入了这种索引访问方式。当在一个联合索引中,某些谓词条件并不在联合索引的第一列时,可以通过Index Skip Scan来访问索引获得数据。当联合索引第一列的唯一值个数很少时,使用这种方式比全表扫描效率高。


11./*+ leading(table_1,table_2) */
在多表关联查询中,指定哪个表作为驱动表,即告诉优化器首先要访问哪个表上的数据。

12./*+ ordered */
让Oracle根据from后面表的顺序来选择驱动表,oracle建议使用leading,他更为灵活

13. /*+ use_nl(table_1,table_2) */
在多表关联查询中,指定使用nest loops方式进行多表关联。

14. /*+ use_hash(table_1,table_2) */
在多表关联查询中,指定使用hash join方式进行多表关联。

15./*+ use_merge(table_1,table_2) */
在多表关联查询中,指定使用merge join方式进行多表关联.


16./*+ parallel(table_name n) */
在sql中指定执行的并行度,这个值将会覆盖自身的并行度

17./*+ no_parallel(table_name) */
在sql中指定执行的不使用并行

18./*+ append */
以直接加载的方式将数据加载入库

19./*+ dynamic_sampling(table_name n) */
设置sql执行时动态采用的级别,这个级别为0~10

20./*+ cache(table_name) */
进行全表扫描时将table置于LRU列表的最活跃端,类似于table的cache属性

21. /*+ HASH_SJ */ /*+ HASH_AJ */
通常使用在Exists,in 子查询中

22. /*+ use_concat */ /*+no_expand*/
or的扩展和不扩展

23./*+NOWRITE*/
禁止对查询块的查询重写操作.
/*+REWRITE*/
按物化视图对语句进行重写

24. /*+MERGE(TABLE)*/ /*+NO_MERGE(TABLE)*/
能够对视图的各个查询进行相应的合并.

25. UNNEST 和 NO_UNNEST
强制Oracle将子查询和主查询合并

26.NO_QUERY_TRANSFORMATION
跳过所有查询转换,包括OR操作转换、视图合并、子查询和主查询合并、星型转换、物化视图语句重写等。

27./*+push_subq(@tmp)*/ /*+QB_Name(tmp)*/
那么push_subq就是为了让子查询最先进行join。
select /*+push_subq(@tmp)*/ hao1.object_name from
hao1,hao2,hao4
where hao1.object_name like '%a%'
and hao1.object_id+hao2.object_id>50
and hao4.object_type=hao1.object_type
and 11 in
(SELECT /*+QB_Name(tmp)*/ hao3.object_id FROM hao3 WHERE hao1.object_id = hao3.object_id);


28./*+push_pred(haoview)*/
接着,我们来使用这里的hint push_pred强制优化器将谓词merge进view中,可见到"VIEW PUSHED PREDICATE":
select /*+push_pred(haoview)*/ hao3.object_name
from hao3,haoview
where hao3.object_name=haoview.object_name(+)
and hao3.object_id=999;


29. /*+ pq_distribute */
提示通常被用于提升数据仓库中分区表间的连接操作性能。

30. CURSOR_SHARING_EXACT
阻止Oracle将SQL语句中的常量替换为绑定变量.

31.DRIVING_SITE
强制Oracle在SQL语句发起的另外一个节点上执行

32.DYNAMIC_SAMPLING
强制Oracle进行动态统计数据采样,采样率参数为0到10,值越大,动态采样数据越多。

33.RESULT_CACHE NO_RESULT_CACHE
强制Oracle将当前查询结果集缓存在RESULT CACHE中

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

索引 查询 数据 方式 关联 强制 选择 方法 条件 语句 谓词 位图 信息 动态 视图 联合 中指 事件 效率 目标 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 联想服务器ST558出现蓝屏 安卓数据库实现双方连接 固态硬盘可以当服务器吗 亳州交通软件开发公司哪家好 外贸客户如何选择服务器 手机使用代理服务器 无线传感器网络技术教材 组织部网络安全自查报告 工业软件开发公司怎样跑业务 常熟软件开发自学课程教学视频 静态编译无法加载数据库 arm架构的通用服务器 提高网络安全技能主题手抄报 新世纪网络课程教材数据库 网络安全测评机构资质 热血航线一直服务器繁忙 对日软件开发英文怎么写 数据库中是否存在视图 服务器是否能使用者的信息 创业策划书软件开发8000 软件开发pm是什么意思 数据库导入注释乱码 网络安全测评机构是什么 最新数据库查q绑 抚顺app软件开发哪家好 网络安全十大公司排名 观安 嵌入式软件开发技术主要学什么 科学引文数据库的建立流程 软件开发面试上机测试 网络安全国家政策方针
0