撰写oracle-sql-hint的注意事项

简介:

有时候Oracle自动生成的执行计划是“笨”的,我们给一些提示信息,让Oracle自动找到“聪明”的执行计划,这就是"hint"。

初学者,甚至专业人员,会遇到这样的疑惑:hint不起作用?

因为Oracle对于错误的hint是自动忽略,所以我们要特别注意hint的语法(暂列一条):如果在SQL中使用了别名,那么Hint中也要使用别名。

样例1:

 
  1. -- 使用索引,t2为别名,PK_My_Table2为索引名  
  2. INDEX(t2 PK_My_Table2)  


样例2:
 

 
  1. -- 要关联t和t1 (其中t和t1为别名)  
  2. USE_MERGE(t,t1)  
  3.  
  4. -- 不要关联t1和t2 (其中t1和t2为别名)  
  5. NO_USE_MERGE(t1,t2) 

样例3:

 
  1. -- hint位于 /*+ 和 */ 之间  
  2. SELECT     
  3. /*+ USE_MERGE(t,t1) NO_USE_MERGE(t1,t2) INDEX(t1 PK_My_Table1) first_rows*/   
  4. <<字段名列表>>  
  5. from .....  
  6.    

 

 本文转自 ztfriend 51CTO博客,原文链接:http://blog.51cto.com/idata/947744,如需转载请自行联系原作者

相关文章
|
1月前
|
SQL Oracle 关系型数据库
Oracle系列十一:PL/SQL
Oracle系列十一:PL/SQL
|
7月前
|
SQL Oracle 关系型数据库
Oracle杂谈二 SQL*PLUS命令的使用大全
Oracle杂谈二 SQL*PLUS命令的使用大全
30 0
|
3月前
|
SQL 存储 Oracle
Oracle PL/SQL 第四章--数据类型
Oracle PL/SQL 第四章--数据类型
|
10月前
|
SQL Oracle 关系型数据库
SQL解析...没有什么大不了的?#oracle(译文)
在Oracle中编写SQL语句时,我们都强调使用共享SQL的重要性,换种说法是:在适当的情况下使用绑定变量,我们大多数人可能都已经看过关于这个原则的标准演示。经典的演示是比较两个类似的脚本,其中一个使用生成大量包含字面量的 SQL 语句,另一个使用绑定变量重新重写相同的脚本以获得显著的改进
|
10月前
|
SQL 存储 缓存
获取和解读Oracle中SQL的执行计划(译文)
生成和显示 SQL 语句的执行计划是大多数 DBA、SQL 开发人员和性能专家的常见任务,因为它提供了 SQL 语句执行性能相关的信息。执行计划显示执行 SQL 语句的详细步骤,这些步骤表示为一组使用和生成行的数据库运算符。运算符的顺序和实现由查询优化器根据查询转换和物理优化技术来决定。
174 0
|
10月前
|
SQL 缓存 监控
Oracle中如何生成有用的SQL 执行计划(译)
漫画戴夫·艾伦(Dave Allen)曾经讲过一个古老的笑话,一个旅行者问路人去某个城镇的路,路人只是说:“如果我是你,我就不会从这里开始。”
113 0
|
SQL Oracle 关系型数据库
oracle学习89-oracle之基本的sql_select语句之课后练习
oracle学习89-oracle之基本的sql_select语句之课后练习
88 0
oracle学习89-oracle之基本的sql_select语句之课后练习
|
SQL Oracle 关系型数据库
Oracle超全SQL,细节狂魔
Oracle超全SQL,细节狂魔
121 0
|
SQL Oracle 关系型数据库
Oracle学习(十一):PL/SQL
本文主要讲Oracle PL/SQL
Oracle学习(十一):PL/SQL
|
SQL 存储 Oracle
Oracle SQL语句优化方法总结
  1、SQL语句尽量用大写的   因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。   2、使用表的别名   当在SQL语句中连接多个表时, 尽量使用表的别名并把别名前缀于每个列上。这样一来,   就可以减少解析的时间并减少那些由列歧义引起的语法错误。   3、选择最有效率的表名顺序(只在基于规则的优化器(RBO)中有效)
166 0

推荐镜像

更多