pq_distribute hint
1,/*+ pq_distribute(@查询块 外部分发表 内部分发表) */
2,此提示让优化器在生产和消费查询服务器分发两个连接表的记录集,这种分发可以极大提升并行连接操作的性能
3,6种分发提示的组合用法
hash,hash
每个表的记录会被映射到消费查询服务器,在连接键或列上使用hash函数.如果映射一完成,每个查询服务器
在每一对分区实行连接操作.这种用法最好用于,外部分发表和内部分发表大小差不多,二者连接操作会以
hash join或sort merge join
broadcast,none
外部分发表的所有记录会被发布到每个查询服务器.而内部分发表会被随机分发到查询服务器.这种方式适用
于外部表非常小,而内部表很大.
none,broadcast
与上述相反
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
查询符合条件的物化视图,而不管它的成本多少
外部分发表的记录通过内部的分区会被映射.内部分发表必须以连接键构建分区.这种分发模式用于,外部表的分区
数量等于查询服务器的倍数.比如: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
查询符合条件的物化视图,而不管它的成本多少