使用Oracle Hint提示来更改执行计划

由于每一版本的优化器都变得更为完善,Oracle 为更改您的 SQL 执行计划提供了不断增多的方法。Oracle 提示的最常见用处是作为调试工具。您可以使用提示来确定最优的执行计划,然后向回执行,调节统计量,使调整后的 SQL 模拟所提示的查询。

使用 Oracle 提示可能非常复杂,而 Oracle 开发人员只是将提示用作最后的手段,首先应改变统计量来更改执行计划。Oracle 包含 124 种以上的提示,其中许多提示在 Oracle 文档中找不到。(参见列表 1)

让我们快速浏览如何使用提示来改变优化器执行计划:优化器提示是放置在 SQL 语句的注释内的优化器指示,用于那些不常出现的情况,即优化器作出了关于执行计划的不正确决策。由于提示处于注释内,因此确保提示名称拼写正确并确保提示适用于该查询十分重要。

例如,以下提示是无效的,因为 first_rows 访问与并行访问相互排斥。这是因为 parallel 始终假定进行全表扫描,而 first_rows 支持进行索引访问。


 

某些 Oracle 专业人员会将提示集合在一起,以强化他们的期望。例如,如果我们有一台具有八个或更多 CPU 的 SMP 服务器,则我们可能希望使用 Oracle 并行查询来加速合法的全表扫描。在使用并行查询时,我们很少会希望在表一级启用并行机制 (alter table customer parallel 35;),因为表的并行机制设置会影响优化器,导致优化器认为全表扫描的代价并不高。因此,多数 Oracle 专业人员在逐个查询的基础上指定并行查询,将完全提示与 parallel 提示联合使用,以确保快速的并行全表扫描:


 

既然我们已经了解了提示的一般性概念,就让我们来观察优化器调整最重要的提示之一。

ordered 提示确定查询执行的驱动表,还指定将表联接在一起的顺序。ordered 提示要求表应该以它们在 from 子句中所指定的顺序进行联接,from 子句中的第一个表指定为驱动表。使用 ordered 提示可以节省大量的分析时间,并加速 SQL 的执行,因为您告诉优化器联接表的最佳顺序。

例如,以下查询使用排序提示,将表以它们在 from 子句中指定的顺序联接起来。在该示例中,我们通过指定 emp 到 dept 的联接使用散列联接,sal 到 bonus 的联接使用嵌套循环联接,进一步改进了执行计划:


 

当然,ordered 提示最常用于数据仓库查询或联接超过五个表的 SQL 中。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-85052/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-85052/

【模型转换】将.mindir文件转换成.ms文件(Windows篇) 首先需要在MindSpore中训练好并经过评估可用的模型,可以以标准格式(例如onnx, mindir等)导出,得到.mindir模型文件(例如lenet.mindir)。为了将模型部署到自定义应用中,还需要将其转换为更为紧凑和高效的ms格式模型,用于在MindSpore-Lite环境中推理,这可以通过MindSpore Lite提供的模型转换工具converter_lite完成。 阅读详情

相关推荐

UE4_SpeedTree Shader源码分析

目录 1.UMaterialExpressionSpeedTree::Compile 2.Compiler->SpeedTree 3.GetSpeedTreeVertexOffset 4.Scene中的SpeedTree应用 (Scene->UpdateSpeedTreeWind) 5.GetSpeedTreeVertexOffsetInner 由于之后做风场,也需要在S...

zzgyy123的专栏 2631

【Oracle篇】使用Hint对优化器的执行计划进行干预(含单表、多表、查询块、声明四大类Hint干预)

Hint 的主要作用是向优化器提供指示,按照用户预先定义的计划来执行 SQL 语句的执行计划。需要注意的是,Hint 是用来约束优化器行为的一种技术,用来辅助DBA和研发人员用来做性能排查和优化,过多的干预可能会导致执行计划不稳定,甚至恶化查询性能,因此尽量避免在开发中使用。毕竟数据是不断变化的,大多数情况下应该让Oracle自行决定采用什么样的执行计划。

奈斯DB的博客 2002

SAP-ABAP:SAP客户端管理核心事务码SCC4深度解析

SAP客户端管理核心事务码SCC4深度解析

baidu_35680696的博客 1567

ORACLE SPM固定hint执行计划

ORACLE SPM固定hint执行计划

七海琉璃的博客 844

保姆级教程:用Anaconda+PyCharm搞定YOLOv8本地部署(附避坑指南)

本文提供了一份详细的YOLOv8本地部署指南,涵盖Anaconda环境配置、PyCharm集成到模型部署的全过程。特别针对国内开发者需求,整合了镜像加速和常见报错解决方案,帮助快速完成目标检测模型的本地部署与实战应用。

weixin_42528090的博客 433

从仿真到打样:PMOS栅极泄放电路设计全流程复盘与三个踩坑点总结

本文详细复盘了PMOS栅极泄放电路从仿真到打样的全流程设计,重点总结了三个关键踩坑点:三极管BE结过压击穿、静态功耗超标和栅极振荡现象。通过优化缓启动电路、改进保护设计和布局调整,最终实现18ms开通时间、190μs关断时间和8μA静态功耗的工业级性能指标,为类似电源开关设计提供实用参考。

weixin_28693683的博客 370

oracle的hint技术,使用hint优化Oracle的执行计划

背景:某表忽然出现查询非常缓慢的情况,cost 100+ 秒以上;严重影响生产。原SQL:explain plan forselect * from (select ID id,RET_NO retNo, FROM_SYS fromSy, TO_SYS toSys, COMMAND_CODE commandCode, COMMAND, STATUS,EXT_CODE, ORIGN_CODE ori...

weixin_42389043的博客 553

数据预处理

数据预处理 数据预处理(数据清洗)是数据挖掘过程中的重要一步,它主要包括数据清洗,数据集成,数据变换和数据规约。 在我们进行数据挖掘的过程中,大量的原始数据中存在着大量有问题的数据(脏数据)比如有缺失值的,不一致的,有异常的,大量重复的数据等。这些脏数据会严重影响到数据挖掘建模过程的执行效率,也可能会使挖掘结果产生偏差。通过数据预处理(数据清洗)可以提高数据的质量,更好的适应特定的挖掘技术及工具。...

CJW的博客 9929

【DBAplus】SQL优化:一篇文章说清楚Oracle Hint的正确使用姿势

原创2016-09-12韩锋 作者介绍 韩锋,宜信技术研发中心数据库架构师。精通多种关系型数据库,曾任职于当当网、TOM在线等公司,曾任多家公司首席DBA、数据库架构师等职,多...

coco3600的博客 3979

ABAP Channels 实战:在 ABAP 7.40 中用 WebSocket 打造实时双向通信

本文详细介绍了SAP ABAP 7.40引入的ABAP Channels通信框架,包含AMC(ABAP Messaging Channels)和APC(ABAP Push Channels)两部分。AMC作为应用服务器内部的消息总线,支持发布/订阅模式,可实现跨会话实时通信;APC基于WebSocket协议,用于浏览器等客户端与ABAP服务器的双向实时交互。文章通过一个乒乓球游戏案例展示了ABAP Channels的实时协作能力,并详细解析了AMC的配置方法、消息发送与接收的代码实现,帮助开发者理解如何利用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 220

VS Code下载安装与使用教程

VSCode下载安装与使用教程

weixin_46713695的博客 4万+

oracle数据库优化器hint,Oracle中基于hint的3种执行计划控制方法详细介绍

hint(提示)无疑是最基本的控制执行计划的方式了;通过在SQL语句中直接嵌入优化器指令,进而使优化器在语句执行时强制的选择hint指定的执行路径,这种使用方式最大的好处便是方便和快捷,定制度也很高,通常在对某些SQL语句执行计划进行微调的时候我会首选这种方式,不过尽管如此,hint在使用中仍然有很多不可忽视的问题;使用hint过程中有一些值得注意的细则,首先便是要准确的识别对应的查询块,如果需要...

weixin_30070339的博客 807

【QT/C++】事件过滤器之基于重写 eventFilter 方法的多种常见应用场景及实现

Qt事件过滤器通过重写eventFilter方法实现多种实用功能:1)鼠标事件处理(点击全选文本、禁用滚轮、悬停提示);2)键盘事件处理(输入内容限制、快捷键提交);3)焦点事件处理(自动弹出下拉框、实时验证);4)绘图事件处理(自定义控件绘制);5)窗口事件处理(防止意外关闭、尺寸限制)。事件过滤器提供非侵入式的事件处理方案,相比传统子类化方式更灵活,通过installEventFilter安装到目标控件即可实现各种交互增强功能。

yuhuasheng1997的博客 1484

oracle hint执行计划,使用Oracle Hint提示来更改执行计划 ZT

===========================================================作者: tolywang(http://tolywang.itpub.net)发表于:2007.11.26 15:30分类: Oracle数据库管理出处:http://tolywang.itpub.net/post/48/418116------------------------...

weixin_35791324的博客 260

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用Oracle Hint提示来更改执行计划 ZT

=========================================================== 作者: tolywang(http://tolywang.itpub.net)发表于:2007.11.26 ...

csdn_201601的博客 87

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Oracle:hint用来手工改变sql的执行计划

RBO:不管统计信息是否正确,执行计划是固定不变的,当优化器无法正确选择执行计划时,可以固定执行计划           不能灵活选择执行计划,程序人员必须按规则编写SQL语句。 CBO:会灵活选择执行计划,程序人员可以灵活编写SQL语句。           由于绑定变量原因而有时无法选择正确的执行计划。 所以从10g开始,只有 CBO ,为了弥补RBO,可以使用Hints   ==...

卖掉裤子来上网 411

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

oracle修改执行计划,调整执行计划的三种方法

当我们碰到SQL的执行计划不正确的情况,可能会有几个选择:第一,通过调整统计信息来改变执行计划;第二,通过在SQL上加hint改变执行计划。但是某些情况下,系统中的SQL不能修改,调整统计信息也不能解决问题(分析统计信息也是一个风险比较大的操作,因为可能会影响到很多相关的SQL),这时我们就要用到一些调整或固化执行计划的方法,下面简要介绍以下三种方法:stored outline(9i),SQL ...

weixin_32121931的博客 3561

【Oracle】看懂执行计划之稳定执行计划

Oracle Hint   Oracle Hints是一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式。 Hint的作用 调整目标SQL使用的优化器类型 调整优化器的优化目标 调整表的访问路径 调整表的连接类型 调整表的连接顺序 提高语句的并行程度 Hint的弊端 Hint是比较"暴力"的一种解决方式,不是很优雅。需要开发人员手工修改代码。 Hint不会去适应新的变化,只是在现有的基础上产生更优的执行计划。 Hint随着数据库

As before 如初 437

oracle如何生成新的执行计划,如何让Oracle产生预期的执行计划(一)

在测试执行计划、SQL优化、对比不同执行计划的效率时,让Oracle产生预期的执行计划还是很有意义的。这里就以INDEX_JOIN为例,简单描述一下如何影响Oracle的执行计划的产生。控制执行计划最简单的方法莫过于使用HINT,这篇文章要介绍的是,在不使用HINT的情况下,让Oracle产生INDEX_JOIN执行计划。下面先构造查询所用的表,问题中使用的表是HR用户下的EMPLOYEES。如果...

weixin_33411550的博客 739

【Oracle中使用sta和hint进行性能优化】

Oracle中STA优化,HINT优化,RULE,FULL,多线程并行,解释执行计划

supermanAjxs的博客 1247

delmatch oracle_oracle稳定执行计划(更改)的方法

应用于那些执行计划已经发生了的不好的变更的SQL上(在不改变SQL文本的情况下,改变其执行计划),即便通过创建SQL Profile解决了目标SQL执行计划变更的问题,依然不能保证系统后续执行的SQL的执行计划会发生不好的变更。a. Automatic类型的SQL Profile1、先针对SQL创建一个名为my_sql_tuning_task_1的自动调整任务:declaremy_task_nam...

weixin_39858275的博客 151

oracle hint 谓词推进,oracle常见hint

与优化器模式相关的hint1.1 /*+ all_rows */ 让优化器启动CBO1.2 /*+ first_rows(n)*/优化器启动CBO,选择会快返回前n行数据的执行计划。与first_rows_n不同,first_rows_n n只能为1,10,100,1000.1.3 /*+ rule */ 启动RBO,与其他hint连用,其他hint一般会失效。与表及索引访问相关的hint2.1 ...

weixin_26870313的博客 1117

稳定ORACLE的执行计划

原文发表在:http://l4j.cc/2019/04/19/oracle-sql-plan-management/  很多时候可能我们都希望CBO能够帮我们生成正确、高效的执行计划,但是很多时候事实并非如此,可能因为各种各样的原因(如,统计信息不正确或者CBO天生的缺陷等)都会导致生成的...

china4875的博客 275

Oracle中hint与spm区别,ORACLE的Optimizer hint基本原理剖析

ORACLE的Optimizer hint基本原理剖析optimzer在评估执行计划的时候考虑的因素主要有统计信息,初始化参数,数据字典的信息。对于这些信息我们能够人为更改的非常有限,而且影响比较大。这时候我们只能通过hint来实现让optimizer选择我们计划的执行计划,从而达到一个稳定执行计划的目的.大部分使用hint来固定执行划的因素无非是:1,optimizer本身存在着bug,不能选择...

weixin_39897070的博客 290

Oracle执行计划管理 - SPM

optimizer_use_sql_plan_baselines - 控制SQL计划基准的使用,启用后,优化器在SQL计划基准中寻找正在编译的SQL语句的计划,如果找到,优化器会计算各个计划的性能开销,然后选择开销最低的计划。SQL 计划管理 (SPM) 确保运行时性能永远不会因为执行计划的更改而降低。Oracle 10:sql profile - 在不修改原SQL语句的情况下,为特定的SQL指定优化器的一些信息,从而导致优化器生成更为合理的SQL执行计划,达到不修改SQL文本就可以改变并执行计划的目的。

jnrjian的博客 1099

【DB笔试面试603】在Oracle中,固定SQL执行计划的方法有哪些?

♣题目部分在Oracle中,固定SQL执行计划的方法有哪些? ♣答案部分在实际项目中,通常在开发环境下,一些SQL执行没有任何功能问题,而当到了生产环境或生产环境...

小麦苗DBA宝典 704
上一篇: db file sequential read等待事件
下一篇: 数据库性能分析及调整一例(zt)
cuixie2370
博客等级 码龄10年 16粉丝 842原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值