oracle hint_px_distribute_push_subq_px_join_filter_qb_name_rewrite

pq_distribute hint
1,/*+ pq_distribute(@查询块 外部分发表 内部分发表) */
2,此提示让优化器在生产和消费查询服务器分发两个连接表的记录集,这种分发可以极大提升并行连接操作的性能
3,6种分发提示的组合用法
  hash,hash
      每个表的记录会被映射到消费查询服务器,在连接键或列上使用hash函数.如果映射一完成,每个查询服务器
      在每一对分区实行连接操作.这种用法最好用于,外部分发表和内部分发表大小差不多,二者连接操作会以
      hash join或sort merge join
 
  broadcast,none
      外部分发表的所有记录会被发布到每个查询服务器.而内部分发表会被随机分发到查询服务器.这种方式适用
      于外部表非常小,而内部表很大.
 
  none,broadcast
      与上述相反
  partition,none
      外部分发表的记录通过内部的分区会被映射.内部分发表必须以连接键构建分区.这种分发模式用于,外部表的分区
      数量等于查询服务器的倍数.比如:14分区和15个查询服务器.
      (注:优化器会忽略,如果内部表在连接键上未分区或不是等值连接)       
     
  none,none
      每个查询服务器会在一对匹配的分区上实行连接操作.自一个表到另一个表.两个表必须是以等值连接操作               
     
     
示例:
 select /*+ ordered pq_distribute(s hash,hash) use_nl(s) */ column_list
 from r,s
 where r.c=s.c;     
 
 
 select /*+ ordered pq_distribute(s broadcast,none) use_hash(s) */ column_list
 from r,s
 where r.c=s.c;
 
 
 
 
 
hint
  push_subq
  1,令优化器在生成执行计划时提早评估非合并子查询,一般来京,非合并子查询会在最后被执行,但
    如果其成本很高或者可以仅输出很小的记录集时,及时评估可以提升性能
  2,如果子查询应用于远程表或通过merge join连接,此提示无效
 
px_join_filter
  1,让优化器使用并行位图过滤
 
qb_name
  1,查询可以定义也可以通过plan_table查询得到
  2,可以用于外部查询或子查询
  3,如果多个查询块同名或者同一个查询块命名两次,优化器会忽略引用此查询块的提示功能.
    未被指定命名的查询块会由系统产生一个名字,可以通过查询plan_table得到
  4,示例:
     select /*+ qb_name(qb) full(@qb e) */ empno from emp e where ename='Smith';
    
    
rewrite
1,/*+ rewrite(@queryblock view) */   
2,如果可能不用考虑成本的话,引提示根据物化视图重写查询.
  如果你在物化视图中使用此提示,oracle会使用此视图不管成本
  (前提是这个视图列表中包括物化视图)
3,oracle不会考虑列表之外的视图,如果你未指定一个视图列表,oracle
  查询符合条件的物化视图,而不管它的成本多少

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-751530/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-751530/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值