前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【云原生进阶之数据库技术】第二章-Oracle-使用-3.5-Oracle中hint使用

【云原生进阶之数据库技术】第二章-Oracle-使用-3.5-Oracle中hint使用

作者头像
江中散人_Jun
发布于 2024-05-30 04:49:12
发布于 2024-05-30 04:49:12
1320
举报

1 Hint概述

        基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。

        此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从 而使语句高效的运行。例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更有效,则我们就可以指示优化器使用全表扫描。在Oracle 中,是通过为语句添加 Hints(提示)来实现干预优化器优化的目的。 不建议在代码中使用hint,在代码使用hint使得CBO无法根据实际的数据状态选择正确的执行计划。毕竟 数据是不断变化的, 10g以后的CBO也越来越完善,大多数情况下我们该让Oracle自行决定采用什么执行计划。

        Oracle Hints是一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用Oracle Hints来实现:

        1) 使用的优化器的类型

        2) 基于代价的优化器的优化目标,是all_rows还是first_rows。

        3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid。

        4) 表之间的连接类型

        5) 表之间的连接顺序

        6) 语句的并行程度

        除了”RULE”提示外,一旦使用的别的提示&#x

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Oracle优化06-Hint
在Oracle 10g中,CBO 可选的运行模式有2种: (1) FIRST_ROWS(n) (2) ALL_ROWS – 10g中的默认值
小小工匠
2021/08/16
1.2K0
常见Oracle HINT的用法
Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。
jack.yang
2025/04/05
940
Oracle Hints具体解释
在向大家具体介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家实用。基于代价的优化器是非常聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了非常差的运行计划,使某个语句的运行变得奇慢无比。
全栈程序员站长
2022/07/13
4560
SQL优化:一篇文章说清楚Oracle Hint的正确使用姿势
Hint是Oracle数据库中很有特色的一个功能,是很多DBA优化中经常采用的一个手段。那为什么Oracle会考虑引入优化器呢?基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻DBA的负担。
宜信技术学院
2019/11/12
9K0
【SQL执行计划】优化器相关Hint
嘉宾介绍: 在SQL优化中,除了可以通过修改参数的方式干预优化器工作外,还可以使用提示的方式进行干预,而且这种方式更加精准、不影响其他SQL,故使用场景更加广泛。 1. ALL_ROWS 说明: AL
数据和云
2018/03/06
1.1K0
【SQL执行计划】优化器相关Hint
Oracle调优之Hint用法整理笔记
整理工作中用到的Hint,不定时更新,Hint是oracle早期因为oracle优化器还不是很完善加上去的,可以辅助oracle优化器,Hint 是Oracle 提供的一种SQL语法,常用于SQL调优,通过Hint强行改变Oracle的执行计划,从而实现sql调优
SmileNicky
2022/05/07
6690
【DB笔试面试574】在Oracle中,什么是RBO和CBO?
Oracle数据库中优化器(Optimizer)是SQL分析和执行的优化工具,是Oracle数据库中内置的一个核心模块。优化器的目的就是为了得到目标SQL的执行计划。Oracle数据库里的优化器又分为RBO(rule-Based Optimizer,基于规则的优化器)和CBO(Cost-Based Optimizer,基于成本的优化器)这两种类型。从Oracle 10g开始,Oracle数据库默认都是基于CBO的优化方式。
AiDBA宝典
2019/09/29
1.4K0
【DB笔试面试574】在Oracle中,什么是RBO和CBO?
读书笔记-《基于Oracle的SQL优化》-第一章-3
用于决定在Oracle中解析目标SQL时所用优化器的类型,以及决定当使用CBO时计算成本值的侧重点。这里的“侧重点”是指当使用CBO来计算目标SQL各条执行路径的成本值时,计算成本值的方法会随着优化器模式的不同而不同。
bisal
2019/01/29
8140
Oracle优化04-Optimizer优化器
Oracle数据库中的优化器是SQL分析和执行的优化工具,它负责制定SQL的执行计划,也就是它负责保证SQL执行效率最高.
小小工匠
2021/08/16
1.3K0
Oracle调优之看懂SQL执行计划explain
之前曾经拜读过《收获,不止sql调优》一书,此书是国内DBA写的一本很不错的调优类型的书,是一些很不错的调优经验的分享。虽然读了一遍,做了下读书笔记,觉得很有所收获,但是到实际的实践中觉得还是很缺实践。刚好最近又有一次sql调优培训活动,去参加后,重新复习Oracle执行计划,所以整理资料,做成笔记分享出来
SmileNicky
2020/06/19
8K0
Oracle调优之看懂SQL执行计划explain
Oracle SQL性能优化40条,值得收藏
语法分析> 语义分析> 视图转换 >表达式转换> 选择优化器 >选择连接方式 >选择连接顺序 >选择数据的搜索路径 >运行“执行计划”
数据和云
2019/05/13
2.8K0
【DB笔试面试605】在Oracle中,SQL概要(SQL Profile)的作用是什么?
SQL Profile就是为某条SQL语句提供除了系统统计信息、对象(表和索引等)统计信息之外的其它信息,比如运行环境、额外的更准确的统计信息,以帮助优化器为SQL语句选择更适合的执行计划。SQL Profile可以说是Outline的进化。Outline能够实现的功能SQL Profile也完全能够实现,而SQL Profile具有Outline不具备的优化,最重要的有两点:①SQL Profile更容易生成、更改和控制。②SQL Profile在对SQL语句的支持上做得更好,也就是适用范围更广。
AiDBA宝典
2019/09/29
1.1K0
SQL优化二(SQL性能调优)
一·、前言:这篇博文内容非原创,是我们公司的架构师给我们做技术培训的时候讲的内容,我稍微整理了下,借花献佛。这篇博文只是做一个大概的科普介绍,毕竟SQL优化的知识太大了,几乎可以用一本书来介绍。另外,博主对SQL优化也是刚刚接触,也有很多不了解的地方,说的不对的地方,还请大家指正,共勉! 二、oracle服务器,所谓oracle服务器指的是一个数据库管理系统,它包括一个oracle实例(动态)和一个oracle数据库(静态)。 oracle实例是一个运行的概念,提供了一种访问数据库的方式,由SGA和一些后
JMCui
2018/03/15
1.5K0
SQL优化二(SQL性能调优)
85-这些SQL调优小"技巧",你学废了吗?
下面这篇文章来自某微信公众号,作者收集了oracle 较早版本的一些SQL优化"技巧",文章标题起的很是诱人.
老虎刘
2022/06/22
1.2K0
Oracle优化
本文内容来源作者实践、公司内部资源及国外文章翻译,大家觉得有样可以拿走,高兴时可以在你文章末尾留下博客地址引用。
jack.yang
2025/04/05
1440
Oracle Hint用法整理笔记
强制使用联合型的关联型(CONNECT BY WITH FILTERING) ,ps:详情
SmileNicky
2019/05/14
1.7K0
分享:Oracle sql语句优化
最近做查询时,写的一条查询语句用了两个IN,导致tuexdo服务积压了不少,用户没骂就不错了。最后经过技术经理的点拨,sql语句性能提升了大约10倍,主要用了表连接、建索引、exists。这才感叹SQL性能优化的重要性啊,网上搜了半天,找到一篇令我非常满意的日志,忍不住分享之:
williamwong
2018/07/24
3.3K0
分享:Oracle sql语句优化
Oracle固定SQL的执行计划(二)—SPM
之前写了一篇文章介绍的是用SQL Profile来调整、稳定目标SQL的执行计划,即使无法修改目标SQL的SQL文本。但SQL Profile实际上只是一种亡羊补牢、被动的技术手段,应用在那些执行计划已经发生了不好的变更的SQL上,即当我们发现这些SQL的执行计划已经出了问题时通过创建SQL Profile来纠正、稳定这些SQL的执行计划。即便通过创建SQL Profile解决了目标SQL执行计划变更的问题,依然不能保证系统后续执行的SQL的执行计划就不再发生不好的变更。这种不确定性会给Oracle数据库大版本升级(比如从Oracle 10g升级到Oracle 11g)带来一系列的麻烦,因为不清楚升级之后原先系统中哪些SQL的执行计划会发生不好的变更。
星哥玩云
2022/08/13
1.3K0
Oracle固定SQL的执行计划(二)—SPM
Oracle Sql优化
3.Oracle在执行IN子查询时,首先执行子查询,将查询结果放入临时表再执行主查询。而EXIST则是首先检查主查询,然后运行子查询直到找到第一个匹配项。NOT EXISTS比NOT IN效率稍高。但具体在选择IN或EXIST操作时,要根据主子表数据量大小来具体考虑。
斯文的程序
2019/11/07
1.5K0
Oracle性能优化之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';
jack.yang
2025/04/05
570
相关推荐
Oracle优化06-Hint
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档