易截截图软件、单文件、免安装、纯绿色、仅160KB

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 万条, c:800万条 , d:100万条
执行计划为:
Hash Join
   ---Hash Join
       -----  Hash Join
               ------  a
               -----    b
       -----  c
   ---d
考虑到d表比较小,我能不能做到将d表作为驱动表、而a,b,c关联之后的结果作为prob外表呢,
通过Ordered好像是没有办法控制这样,加了就只能是a作为驱动表装载内存,b作为prob表与之关联,
之后的结果再作为驱动表,以此类推。
用Leading可以吗?请给出语法,谢谢。
 
解答:
 
oracle 10g中
hash_join可以通过no_swap_join_inputs/swap_join_inputs来强制控制build表,配合leading或者ordered可以控制多表之前的连接顺序。
比如t1,t2,t3,t4共4张表做hash_join
可以通过ordered+no_swap_join_inputs/swap_join_inputs来实现。
比如
如果想实现
( T3 hash-join (T1 hash-join T2)) hash-join T4
t1作为build表和T2做hash_join,然后t3作为build表和t1,t2的结果集作hash_join,在把t3,t1,t2的结果集作build表和t4做hash_join
通过sql可以写为
MYDB@MYDB10G >select
  2  /*+
  3  ordered
  4  use_hash(t2)
  5  use_hash(t3)
  6  swap_join_inputs(t3)
  7  use_hash(t4)
  8  no_swap_join_inputs(t4)
  9  */
10  * from t1,t2,t3,t4
11  where t1.object_id=t2.object_id
12  and t2.object_name=t3.object_name
13  and t3.owner=t4.owner
14  and t4.owner='MYDB'
15  /
已用时间:  00: 00: 00.07
执行计划
------------------


相关文档:

oracle 遍历树

oracle 怎么来遍历一个树,相比较其他方法,oracle的connect语法更能很便利的解决问题。
语法格式:
select ...
from ...
start with...
connect by prior expr=expr
order siblings by ..
start with 的功能类似于where,指明从哪个分支开始便利;
connect by 指明父节点和子节点地连接方式,关键字prior放在父节 ......

11g的Oracle Grid Infrastructure

2010年05月2号  | 
23:59分类:Linux&Unix
, 管理维护
  |  编辑
  |  标签:11g
、grid

本文出自 “inthirties(男
人三十)
”博客,转载请务必注明作者和保留出处。
11g里出现了一个新角色。
Oracle Grid Infrastructure
http://downlo ......

Oracle DECODE

语法:
DECODE(expr, search, result [, search, result ]... [, default ] )
应用:
DECODE函数将每一个expr和search的值做比较。如果expr的值与search的值相等,Oracle数据库就会返回相应的result。如果找不到匹配的值,Oracle返回default。如果没有default,Oracle返回null值。参数可以是任意数值类型(NUMBER,BINAR ......

用PowerDesingner把oracle中的表导成er图

通过windows数据源管理,建立ODBC数据源。
我的是基于oracle10g。
 
打开Windows的控制面板
打开管理工具
 
打开数据源(ODBC)
 
选择你要操作的数据库类型
               1.我选择的时候报未找到客户端组件和一些客户 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号