Oracle hint Leading 的使用

Oracle查询优化神器:Hint命令使用大全 Oracle Hint是一种嵌入在SQL注释中的特殊指令,用于指导优化器选择执行计划。主要分为访问路径Hint(FULL、INDEX等)、连接顺序Hint(ORDERED、LEADING)、连接方法Hint(USE_NL、USE_HASH等)、并行执行Hint(PARALLEL)和高级Hint(MATERIALIZE、FIRST_ROWS等)。使用时需遵循特定语法格式,可通过执行计划对比验证效果。需注意Hint可能因语法错误、别名不匹配等原因失效,建议先分析后逐步添加,并定期复查。合理使用Hint能优化查询 阅读详情

Leading(): 指示Oracle在执行join(hash join, nested loop join, merge join)时的连接顺序。

当执行计划不按照最优的表连接顺序时,考虑使用Leading 改变执行计划。 使用leading 的目的是减少检索数据量, 提高查询性能。

eg:


select v.*, t.* from v_view1 join (select  /*+ leading(t1, tftc) */ * from tftc, t1 where t1.id=tftc.id) t
on v.id=t.id and v.name=t.name left join t2 on t2.name=v.name

;



LEADING Hint

Description of leading_hint.gif follows
Description of the illustration leading_hint.gif

(See "Specifying a Query Block in a Hint"tablespec::=)

The LEADING hint instructs the optimizer to use the specified set of tables as the prefix in the execution plan. This hint is more versatile than the ORDERED hint. For example:

SELECT /*+ LEADING(e j) */ *
    FROM employees e, departments d, job_history j
    WHERE e.department_id = d.department_id
      AND e.hire_date = j.start_date;

The LEADING hint is ignored if the tables specified cannot be joined first in the order specified because of dependencies in the join graph. If you specify two or more conflicting LEADING hints, then all of them are ignored. If you specify the ORDERED hint, it overrides all LEADING hints.




解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(3)(连接顺序相关Hint 本文对解决Oracle SQL语句性能问题——常用Hint及语法(连接顺序相关Hint),结合实例进行了详尽的说明和讲解,并对注意事项、关键知识点和选项等进行了重点标注和详尽解析,以便于读者进行深入学习和理解。 阅读详情

相关推荐

oracle 使用leading, use_nl, rownum调优

1、使用leading和use_nl来设置表的查询顺序,来加快查询速度,一般把小表设为第一个表。 /*+LEADING(TABLE)*/   将指定的表作为连接次序中的首表. /*+USE_NL(TABLE)*/   将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表. 成本计算方法: 设小表100行,大表100000行。 两表均有索引: 如果小表在内,大表在外(驱动表)

巫山云的专栏 8236

[转]oracle 使用leading, use_nl, rownum调优例子

1、使用leading和use_nl来设置表的查询顺序,来加快查询速度,一般把小表设为第一个表。/*+LEADING(TABLE)*/  将指定的表作为连接次序中的首表./*+USE_NL(TABLE)*/  将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.成本计算方法:设小表100行,大表100000行。两表均有索引:如果小表在内,大表在外(驱动表)的话,则扫描次数为:10

空心居 1475

Hint 使用--leading

Oracle hint -- leading 的作用是提示优化器某张表先访问,可以指定一张或多张表,当指定多张表时,表示按指定的顺序访问这几张表。而 Postgresql leading hint的功能与oracle不同,leading 后面必须跟两张或多张表,如果是两张,表示这两张表先进行连接,但两张表的访问顺序不定。如果要严格控制表的访问顺序,还必须使用双括号,具体用法以例子形式进行介绍。 ...

lyu1026的博客 2142

oracle hint_leading

oracle hint_leading_merge1,leading 1,比ordered功能更多 2,如下明确看出leading可以发变首表 3,如果指定了ordered,优先级高于leading ...

609

Oracle入门教程:leading vs ordered hint

[img]http://dl2.iteye.com/upload/attachment/0097/3418/e01fd7b2-8f74-3f23-aa24-52db24ef828b.jpg[/img] leading hint 可以指示Oracle使用leading 中指定的表作为驱动表, 比如 正常的访问计划如下 SCOTT@www.linuxidc.com> select e.ena...

iteye_4680的博客 367

oracle hint中ordered 和leading原理很好的帖子

http://blog.csdn.net/mantisXF/archive/2010/05/06/5560429.aspx

旅行人生 2111

oracle hint中ordered 和leading

问题:请教HINT写法 我有一个SQL添加如下hint,目的是指定hash_join方式。   select /*+ordered use_hash(a,b,c,d) */ * From a,b,c,d Where ... 其中, a只与b有关联关系,b只与c有关联关系,b只与c有关联关系,c只与d有关联关系,     数量级:a:1000条,  b:100 万条

367

oracle hint use_nl,了解如何利用ordered,use_nl(),leading(),index()进行调优 ...

首先我们来分别介绍一下这四个hint的概念:1. ORDERED hint:ordered hint 指示oracle按照from关键字后的表顺序来进行连接。如果没有及时收集统计信息,查询优化器没有得到足够信息,此时你可以自行选择适当的inner及outer表进行连接。ORACLE推荐使用LEADING hint,它比ordered hint有更多的用途。2. LEADING hint:leadi...

weixin_35828255的博客 1689

oracleleading vs ordered hint

leading hint 可以指示oracle使用leading 中指定的表作为驱动表, 比如 正常的访问计划如下 SCOTT@yangdb> selecte.ename,hiredate,b.comm 2 fromemp e,bonus b 3 wheree.ename = b.ename; Execution Pla...

weixin_34128237的博客 303

oracle leading(),oracle hint中ordered 和leading原理很好的帖子

问题:请教HINT写法我有一个SQL添加如下hint,目的是指定hash_join方式。select /*+ordered use_hash(a,b,c,d) */ *from a,b,c,dWhere ...其中,a只与b有关联关系,b只与c有关联关系,b只与c有关联关系,c只与d有关联关系,数量级:a:1000条,b:100 万条, c:800万条 , d:100万条执行计划为:Hash ...

weixin_39541844的博客 739

leading--Oracle hint

SQL> explain plan for select rowid rid from 2 scott.emp e where e.empno >100 and e.empno < 1000 and e.deptno in (select deptno from scott.dept where dname like 'a%'); 已解释。 SQL> SELEC...

weixin_30642029的博客 164

oracle 联接表修改数据,Oracle HowTo:如何使用Leading提示改变表连接方式

大师,您好!每天早上都会在第一时间登录您的blog,每天都会有新的收获,谢谢您为oracle world做的贡献!对于leading hint的结果,我一直以为可以通过这样的方式得到和leading同样的explain plan,但刚刚的实验不是这样:(SQL> SELECT /*+ ordered use_hash(t_max t_middle) use_hash(t_middle,t_s...

weixin_30069911的博客 153

orderd mysql_Oracle入门教程:leading vs ordered hint

odered hint 可以指示oracle 使用from 关键字后面的表的顺序进行join连接!cbo会优先按照from 后面的表的顺序来进行join,当统计leading hint 可以指示Oracle使用leading 中指定的表作为驱动表,比如 正常的访问计划如下SCOTT@> select e.ename, hiredate, b.comm2 from emp e, bonus...

weixin_30970539的博客 275

多表使用use_hash hint

我们在写多表use_hash(use_nl也一样)hint的时候,use_hash的括号里面是可以放多个表(顺序无关),但是一定要结合leadinghint,才能保证优化器不使用其他的join方式。-------这个leading也不生效啊--------------------应该是u和上面没有join条件 只能nest loop 笛卡尔积。这个执行计划出现了nested loops的情况,没有按照hint的指示全部使用hash_join,说明这种hint的写法确实是有问题的。当然是和第一个表V)。

jnrjian的博客 1873

Oracle常见hint

Hint直接跟在select/update/merge/insert后,否则不起作用。结构:/*+ */ Parallel(4): 由于Oracle并发采用生产者-消费者模式,这里表示每组生产者/消费者有4个slave。实际进程数量有N*4+1个,通常N=2。 1是QC, Query Coordinator。 Append: 常见于insert语句,指令Oracle采用direct-path

chncaesar的专栏 3521
上一篇: Oracle DB automatic collect statistics
下一篇: Oracle 11g 分区表收集统计信息 使用INCREMENTAL
xiadingling
博客等级 码龄14年 34粉丝 245原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值