ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle hint_px_distribute_push_subq_px_join_filter_qb_name_rewrite

oracle hint_px_distribute_push_subq_px_join_filter_qb_name_rewrite

Linux操作系统 作者:azzotest 时间:2015-09-30 15:24:52 0 删除 编辑
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/26224278/viewspace-1812465/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-08-21

  • 博文量
    22
  • 访问量
    50743