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

1) 使用的优化器的类型

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

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

4) 表之间的连接类型

5) 表之间的连接顺序

6) 语句的并行程度

1、写HINT目的

人为的改变SQL语句的执行计划

2、HINT可以基于以下规则产生作用

表连接的顺序、表连接的方法、访问路径、并行度

3、HINT应用范围

dml语句

查询语句

4、语法

{DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] [hint[text]]... */

or

{DELETE|INSERT|SELECT|UPDATE} --+ hint [text] [hint[text]]...

如果语(句)法不对,则ORACLE会自动忽略所写的HINT,不报错

5、指定优化器模式的HINT

RULE:不管是否有统计信息,都将采用基于规则进行优化;

CHOOSE:只要被访问的数据中有一个表有统计信息,就将采用基于代价的方式进行优化;

FIRST_ROWS:不管是否有统计信息,都将采用基于代价的方式进行优化,其优化目标是最快响应时间;

ALL_ROWS:不管是否有统计信息,都将采用基于代价的方式进行优化,其优化目标是最大吞吐量;

例子:

尽快地显示前10行记录

select /*+ first_rows(10) */ * from emp where deptno=10;

6、指定访问路径的HINT

FULL: 执行全表扫描

/*+ FULL ( table ) */

ROID: 根据ROWID进行扫描

/*+ ROWID ( table ) */

INDEX: 根据某个索引进行扫描

/*+ INDEX ( table [index [index]...] ) */

select /*+ index(emp ind_emp_sal)*/ * from emp where deptno=200 and sal>300;

如果写了多个,则ORACLE自动选择最优的哪个

select /*+ index(emp ind_emp_sal ind_emp_deptno)*/ * from emp where deptno=200 and sal>300;

INDEX_JOIN: 如果所选的字段都是索引字段(是几个索引的),那么可以通过索引连接就可访问到数据,而不需要访问表的数据。

/*+ INDEX_JOIN ( table [index [index ...]] ) */

select /*+ index_join(emp ind_emp_sal ind_emp_deptno)*/ deptno,sal from emp where deptno=20;

INDEX_FFS: 执行快速全索引扫描

/*+ INDEX_FFS ( table [index [index]...] ) */

select /*+ index_ffs(emp pk_emp)*/ count(*) from emp;

NO_INDEX: 指定不使用哪些索引

/*+ NO_INDEX ( table [index [index]...] ) */

select /*+ no_index(emp ind_emp_sal ind_emp_deptno)*/ * from emp where deptno=200 and sal>300;

AND_EQUAL: 指定合并两个或以上索引检索的结果(交集),最多不能超过5个

/*+ AND_EQUAL ( table index index [index] [index] [index] ) */

7、指定表的连接顺序

ORDERED: 按表出现的顺序进行连接

/*+ ORDERED */

select /*+ordered*/ emp.ename,dept.dname from dept,emp where emp.deptno=dept.deptno;

select /*+ordered*/ emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno;

8、指定表的连接操作

USE_NL: 按nested loops方式连接

--默认hash join,获取所有数据的最快返回时间

select emp.ename,dept.dname from dept,emp where emp.deptno=dept.deptno;

--指定emp作为inner table ,以获取最快的响应时间

select /*+ordered use_nl(emp) to get first row faster */ emp.ename,dept.dname from dept,emp where emp.deptno=dept.deptno;

select /*+ordered use_nl(emp dept)*/ emp.ename,dept.dname from dept,emp where emp.deptno=dept.deptno;

另:每个SELECT/INSERT/UPDATE/DELETE命令后只能有一个/*+ */,但提示内容可以有多个,可以用逗号分开,空格也可以。如:

/*+ ordered index() use_nl() */未完待续。

oracle用hints调优,oracle性能优化之--hints相关推荐

  1. oracle自带调优,oracle 参数调优

    一.升级到11gR2之后 oracle数据库升级助手(DBUA)配置工具包括一个自动扩展系统文件的命令选项,能够从oracle express(XE或免费版)升级到其他版本. 升级前脚本检查以下各项: ...

  2. apache php 调优_性能优化之PHP优化

    一.语言级性能优化(一) PHP 性能问题的解决方向 PHP语言级别的性能优化 => PHP周边问题的性能优化 => PHP语言自身分析.优化 1.压力测试工具 Apache Benchm ...

  3. oracle用hints调优,oracle hints的那点事

    3.通过append hint来插入数据,演示它和普通插入数据的性能比较. LEO1@LEO1> set timing on                                   ...

  4. 二十种实战调优MySQL性能优化的经验(转自公众号:架构之家 2018-05-08)

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  5. Java性能优化,操作系统内核性能调优,JYM优化,Tomcat调优

    文章目录 Java性能优化 尽量在合适的场合使用单例 尽量避免随意使用静态变量 尽量避免过多过常地创建Java对象 尽量使用final修饰符 尽量使用局部变量 尽量处理好包装类型和基本类型两者的使用场 ...

  6. 文件上传服务器jvm调优,JVM性能调优解决方案(12页)-原创力文档

    精品文档 JVM性能调优解决方案(总结) 一.引言 本文的读者是技术支持人员.阅读本文后,你将理解 jboss 的启动脚本文件 (run.sh )中有一系列的 JVM配置参数的含义,以及如何调整它们, ...

  7. 记一次Java调优,性能提高20倍

    记一次Java调优,性能提高20倍 背景 最近我们接入网关OpenAccess服务增加了流量监控(阿里的Sentinel),进入测试环境,用20个线程并发测试后发现性能问题很严重,响应时间到达了100 ...

  8. Tomcat调优和JVM优化

    title: Tomcat调优和JVM优化 date: 2018-7-22 19:27:56 tags: [Tomcat,Java,JVM] categories: [JVM] Tomcat本身优化 ...

  9. R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格、可视化核心参数与评估指标关系、Accuracy与树的深度、个数的关系、Kappa与树的深度、个数的关系

    R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格.可视化核心参数与评估指标关系.Accuracy与树的深度.个数的关系.Kappa与树的深度.个数的关系 目录 R语言使用caret ...

最新文章

  1. tsconfig.json编译选项
  2. 建库、建表、建约束、插入测试数据
  3. R语言实战应用精讲50篇(一)-万字长文干货R语言ggplot2包图形绘制
  4. Hystrix解决雪崩问题的两种手段
  5. gym103117J. Ants
  6. 菜式介绍:风味黄泥烤鸡
  7. 程序员笔记 CherryTree 0.99.28 发布
  8. 软件测试基础 (三): 系统测试
  9. 【转载】CPU的内部架构和工作原理
  10. tplink怎样设置虚拟服务器,tplink怎么设置虚拟服务器
  11. 网页加载过程+性能优化+安全
  12. Windows10 使用Win32.Mak 进行makefile编译
  13. 李沐-动手学习深度学习v2
  14. 外卖联盟高级接口 - 美团联盟接口 美团外卖CPS+CPA推广活动推广API接口
  15. PING用一生诠释了TCP/IP(4)------二三层转发为PING劈荆斩棘
  16. ​6. 独享锁 VS 共享锁
  17. 常见的DNS记录类型有哪些?如何查询DNS解析记录?
  18. gmail头像,字母头像(如Gmail Android最佳做法)
  19. Linux应用开发3 字符串处理,字符串与其他数字类型的转换,向应用程序传参
  20. 解决ubuntu14.04下,火狐浏览器无法访问csdn官网问题

热门文章

  1. 微信公众号服务器配置ur超时,公众号服务器配置后自动回复
  2. 通过函数指针调用static
  3. 从NNLM到Bert,NLP语言模型发展概述
  4. python+selenium进行web自动化测试
  5. SPSS常用的相关性分析方法解析(转载)
  6. 老卫带你学---C++中map与pair的区别
  7. 家庭用户适宜选择什么样的计算机,电脑内存越大越好吗 怎么选择适合自己电脑内存【详细介绍】...
  8. 【思维导图】- 不可回避的遗忘规律
  9. Linux基础——运维 (operation)
  10. folly json 学习