详情:1语法

1)关键字说明

DELETE、INSERT、SELECT和UPDATE是标识一个语句块开始的关键字,包含提示的注释只能出现在这些关键字的后面,否则提示无效。

"+"号表示该注释是一个提示,该加号必须立即跟在"/*"的后面,中间不能有空格。

hint是下面介绍的具体提示之一,如果包含多个提示,则每个提示之间需要用一个或多个空格隔开。

text是其它说明hint的注释性文本

2)提示中的错误

提示中的语法错误不会报错,如果解析器不能解析它,就会把它看做一个普通注释处理。这也是容易造成困惑的一点,使用的Hint到底是否起效?可以采用一些手段,检查提示的有效性。需要注意的是,那些语法正确但引用对象错误的提示是不会被报告的。

explain plan + dbms_xplan

使用dbms_xplan输出中的note选项。

10132事件

在10g中,这个事件产生的输出文档的末尾有一部分内容专门讲提示。通过它可以检查两个方面:一是每个用到的提示都会被列出来。如果漏掉了哪个,就说明这个提示没有被识别;二是检查是否有一些信息指明了出现提示错误(如果出错,err值将大于0)。

3)提示中的对象

SELECT /*+ INDEX(table_name index_name) */ ...

table_name是必须要写的,且如果在查询中使用了表的别名,在hint也要用表的别名来代替表名。

index_name可以不必写,Oracle会根据统计值选一个索引。

如果索引名或表名写错了,那这个hint就会被忽略。

如果指定对象是视图,需要按此方法指定。/*+hint view.table ...*/,其中table是view中的表。

一个很常见的错误时,在使用提示的时候最易犯的错误是与表的别名有关。正确的规则是,当在提示中使用表时,只要表有别名就应该使用别名而不是表名。

2提示的作用域

查询块

初始化参数提示对整个SQL语句起作用,其他的提示仅仅对查询块起作用。仅仅对单个查询块起作用的提示,必须在它控制的查询块内指定。

例外 - 全局提示

可以使用点号引用包含在其他查询块(假设这些块已命名)中的对象。全局提示的语法可以支持两层以上的引用,对象间必须用点号分隔。

命名查询块

既然where子句中的子查询是没有命名的,它们的对象就不能被全局提示引用。为了解决这个问题,10g中使用了另一种方法来解决-命名查询块。查询优化器可以给每个查询生成一个查询块名,而且还可以使用提示qb_name手工为每个查询块命名。大多数提示都可以通过参数来指定在那个查询块中有效。

*在提示中通过@来引用一个查询块。

3提示数据字典

Oracle在11g的版本中提供了一个数据字典—V$SQL_HINT。通过这个数据字典可以看到提示的出现版本、概要数据版本、SQL特性以及相反提示等。

INVERSE

这个hint相反操作的hint。

VERSION

代表着这个hint正式公布引入的版本。

oracle 多个hint用法,Hint用法相关推荐

  1. Oracle中INSTR和SUBSTR的用法

    2019独角兽企业重金招聘Python工程师标准>>> Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, ...

  2. oracle分组聚合查询,Oracle中分组查询group by用法规则解析

    本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...

  3. Oracle的AES加密与解密用法

    Oracle的AES加密与解密用法 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/it ...

  4. oracle触发器函数,oracle 存储过程、函数和触发器用法实例详解

    本文实例讲述了oracle 存储过程.函数和触发器用法.分享给大家供大家参考,具体如下: 一.存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 创建存储过程 用CR ...

  5. Oracle系列之add_months简介以及用法归纳教程

    Oracle系列之add_months简介以及用法归纳教程 最近遇到一个SQL统计,需要遇到获取某个日期n个月后的日期,比如统计入职时间超过2年的员工信息 如果不依靠Oracle函数,自己去写有点麻烦 ...

  6. partition by mysql_详解Oracle查询中OVER (PARTITION BY ..)用法

    本文主要介绍了Oracle查询中OVER (PARTITION BY ..)用法,内容和代码大家参考一下,希望能帮助到大家.为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立 ...

  7. oracle8i substr,Oracle中INSTR和SUBSTR的用法

    Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到 ...

  8. Oracle中rownum的说明及用法总结

    Oracle中rownum的说明及用法总结 一.rownum的说明 rownum是Oracle特有的一个关键字. (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rown ...

  9. oracle 两个竖杠的作用,Oracle 关于concat与双竖线用法的补充

    --只能连接2个字符串 select concat('nod',' chen is ') from dual; --连接2个列名 select concat(name,ip2) from vm_inf ...

  10. java metadata 使用_java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMet ...

最新文章

  1. 管理员信息管理之获取管理员用户列表数据
  2. Ardino基础教程 19_舵机控制
  3. Java FlatMapFunction in Spark: error: is not abstract and does not override abstract method解决方案
  4. [蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论
  5. 从lambda表达式看final关键字
  6. 公共语言运行库(CLR)和中间语言(IL)(一)
  7. python语言变量随时命名随时赋值_Python变量及数据类型用法原理汇总
  8. VR 游戏开发资料收集
  9. 程序员的 升级 ,价值观的改变
  10. ModbusTCP协议
  11. PGSQL触发器实例
  12. XZ_icp金融经营许可证相关的文档和相关问题
  13. 三端稳压管原理、作用、解决发热的问题
  14. matlab中.m文件访问simulink
  15. X86与X64之间的区别
  16. php 获取微博cookie,c#获取新浪微博登录cookie
  17. android手机线控失效,耳机线控失效 苹果iOS 10.0.2终于修好了
  18. 葡聚糖-叶酸;Dextran-FA;Dextran-Folicacid 结构式;科研试剂简介
  19. Babel的使用方法
  20. QMAIL简明安装(转)

热门文章

  1. 在C++中如何实现文件的读写
  2. 注意 ExecuteNonQuery() 返回值 问题
  3. JAVA计算机毕业设计茶叶企业管理系统Mybatis+系统+数据库+调试部署
  4. oracle 无效的列类型 1111,MYBATIS 无效的列类型: 1111
  5. javascript 控制台输出 图片 console.log 真强大 真佩服你们的创造力
  6. JSP注释(多种注释详解)
  7. python读取文件列表并排序
  8. 大数运算(加、减、乘、除)--C++
  9. 钉钉接入大模型后,我才看懂阿里云钉一体战略的真正价值
  10. 使用cmd命令创建指定大小文件