oracle两查询差异,两个Oracle查询语句,执行计划如何有这么大的差异

当前位置:我的异常网» Oracle管理 » 两个Oracle查询语句,执行计划如何有这么大的差异

两个Oracle查询语句,执行计划如何有这么大的差异

www.myexceptions.net  网友分享于:2013-03-15  浏览:42次

两个Oracle查询语句,执行计划怎么有这么大的差异?

select /*parallel(a, 12)*/

d.statis_date,

d.area_code,

d.cell_sale_id,

count(c.serv_number)

from (select distinct (case

when(a.whole_fee > 0 or a.word_fee>0) then

a.msisdn

when(a.msisdn = b.msisdn and (a.book_chpt_cnt > 0 or a.book_download_cnt > 0)) then

a.msisdn

else

null

end) serv_number

from masadw.tb_dw_ns_read_user_act_list a,

masadw.tb_dw_ns_read_user_order_list b

where a.msisdn = b.msisdn(+)

and a.deal_date between vd_first_date and vd_date

and b.deal_date between vd_first_date and vd_date) c

masadw.tb_mk_sc_user_dtal d

where c.serv_number = d.serv_number

and c.user_status_id <> 'H'

and c.statis_date = vd_date

group by d.statis_date,

d.area_code,

d.cell_sale_id;

执行计划:

对象 耗费

-select statement,goal=all rows

-sort group by

-view VM_NWVW_1

-sort unique

-filter

-filter

-hash join outer

-merge join cartesian

-partition list iterator

table access all TB_DW_NS_READ_USER_ACT_LIST 10030

-buffer sort

-partition range single

-partition list all

table access all TB_MK_SC_USER_DTAL 64756033

-partition list iterator

table access full TB_DW_NS_READ_USER_ORDER_LIST 94268

select /*parallel(b, 12)*/

b.statis_date,

b.area_code,

b.cell_sale_id,

count(case

when a.new_stdt_count = '1' then

a.serv_number

else

null

end)

from masadw.tb_kr_campus_user_dtal a,

masadw.tb_mk_sc_user_dtal b

where a.serv_number = b.serv_number

and b.user_status_id <> 'H'

and a.statis_date = vd_date

and b.statis_date = vd_date

group by b.statis_date,

b.area_code,

b.cell_sale_id;

执行计划:

对象 耗费

-select statement,goal=all rows

-PX COORDINATOR

-PX SEND QC(RANDOW) :TQ10003 98152

-SORT GROUP BY

-PX RECEIVE

-PX SEND HASH :TQ10002 98152

-SORT GROUP BY

-HASH JOIN

-BUFFER SORT

-PX RECEIVE

-PX SEND HASH :TQ10000 31066

-PARTITION LIST SINGLE

TABLE ACCESS FULL TB_KR_CAMPUS_USER_DTAL 31066

-PX RECEIVE

-PX SEND HASH :TQ10001 67082

-PX BLOCK ITERATOR

TABLE ACCESS FULL TB_MK_SC_USER_DTAL 67082

------解决方案--------------------

你上面的查询里面有子查询,执行的三次全表扫面,第二次里面只有两次吧

文章评论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值