Oracle的并行查询尝试

分析表,重新估算统计信息
ANALYZE TABLE tasharecurrents ESTIMATE statistics;

打开或关闭表的并行选项
ALTER TABLE tasharecurrents PARALLEL;
--ALTER TABLE tasharecurrents NOPARALLEL;

启用oracle hint,强制执行计划,分别记录有并行和无并行的执行时间
select --/*+ parallel(t)*/
b.fundname 基金名称,
    sum(nvl(t.lastshares, 0)) 份额,
    sum(decode(m.individualorinstitution, '1', 0, t.lastshares)) 机构投资者,
    sum(decode(m.individualorinstitution, '1', t.lastshares, 0)) 个人投资者,
    count(distinct(decode(m.individualorinstitution, '1', null, t.taaccountid))) 机构投资者数量, -- null的个数不计入count
    count(distinct(decode(m.individualorinstitution, '1', t.taaccountid, null))) 个人投资者数量
from tasharecurrents t,
    tafundtype b,
    taaccoinfo m
where 1 = 1
and t.fundcode = b.fundcode
and t.taaccountid = m.taaccountid
AND t.transcfmdate <= to_date('20070430', 'yyyymmdd')
and t.sharevaliddate > to_date('20070430', 'yyyymmdd')
and t.lastshares > 0
group by b.fundname
;

执行计划为
SELECT STATEMENT, GOAL = CHOOSE   Cost=22780 Cardinality=13 Bytes=832
 SORT GROUP BY   Cost=22780 Cardinality=13 Bytes=832
  SORT GROUP BY   Cost=22780 Cardinality=13 Bytes=832
   SORT GROUP BY   Cost=22780 Cardinality=13 Bytes=832
    HASH JOIN   Cost=17001 Cardinality=6908778 Bytes=442161792
     TABLE ACCESS FULL Object owner=TA Object name=TAFUNDTYPE Cost=2 Cardinality=13 Bytes=195
     HASH JOIN   Cost=16999 Cardinality=6908778 Bytes=338530122
      TABLE ACCESS FULL Object owner=TA Object name=TAACCOINFO Cost=2114 Cardinality=2590572 Bytes=33677436
      TABLE ACCESS FULL Object owner=TA Object name=TASHARECURRENTS Cost=14885 Cardinality=6908778 Bytes=248716008

最后,比较发现并行对该查询没有效果,有无并行的执行时间基本相同。初步估计可能跟tasharecurrents的存储结构有关系。tasharecurrents有500万行,记录平均长度约150byte,taaccoinfo约200万行记录,记录平均长度约150byte。两个表没有分区。

其它相关sqlplus命令:
show parameter opt
alter system set optimizer_mode = ALL_ROWS scope = spfile;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值