UDN-企业互联网技术人气社区

板块导航

浏览  : 2216
回复  : 6

[技术架构] sql优化请帮忙

[复制链接]
深秋的黎明的头像 楼主
发表于 2014-5-8 16:31:39 | 显示全部楼层 |阅读模式
下游为发货计量单,上游为请车计划,通过一些字段(客户、物料等)查询可能存在的上游单据,如果上游单据很多的情况下,查询就会变得很慢,大神们帮忙看看否能优化一些,跪谢!

select h.pk_busitype busitype,
        null dispatchcode,
        b.cmaterialid cmaterialid,
        b.pk_custdoc pk_customer,
        b.csendcalbody csendcalbody,
        b.csendstationid csendstation,
        b.crecestationid crecestationid,
        h.pk_org pk_org,
        h.vbillcode vsourcebillcode,
        'HG20' csourcetypecode,
        b.pk_requtrain_h csourcebillid,
        b.pk_requtrain_b csourcebillbid,
        b.creceiveid crecievecubas,
        'Y' isneedreponder,
        b.pk_custdoc pk_cumandoc,
        b.pk_sendtype,
        h.ccarrierid ccarriersdoc,
        b.nprice,
        b.nnotaxprice,
        b.ntaxrate,
        b.vfirstbillcode vfirstbillcode,
        b.vfirsttypecode cfirsttypecode,
        b.vfirstbillid cfirstbillid,
        b.vfirstbillbid cfirstbillbid,
        nvl(b.nreplynum, 0) - nvl(b.nfinishnum, 0) ncouldsendnum,
        b.pk_sendtype csendtype,
        1 deliverytype,
        b.cdiffaorgid cdiffcorpid,
        b.ndiffattri ndiffattri,
        b.nsettleattri nsettleattri,
        b.crececalbody cincalbody,
        b.crecestordoc cinwarehouseid,
        b.vfree1 vfree1,
        b.vfree2 vfree2,
        b.vfree3 vfree3,
        b.vfree4 vfree4,
        b.vfree5 vfree5,
        h.ts ts
   from hgts_requtrain_h_181 h
  inner join hgts_requtrain_b_181 b
     on h.pk_requtrain_h = b.pk_requtrain_h
  inner join (select distinct pub_billbusiness.pk_businesstype pk_billbusiness,
                              pub_billbusiness.pk_billtype     pk_billtype,
                              pub_billsource.referbilltype     referbilltype
                from pub_billbusiness
               inner join pub_billsource
                  on pub_billsource.billbusinessid =
                     pub_billbusiness.pk_billbusiness) business
     on business.pk_billbusiness = h.pk_busitype
    and business.pk_billtype = 'HG32'
    and business.referbilltype = h.vbilltypecode
  inner join hgts_vhemngdoc_181 car
     on nvl(car.pk_sendtype, b.pk_sendtype) = b.pk_sendtype
  where nvl(h.dr, 0) = 0
    and nvl(b.dr, 0) = 0
    and h.vbilltypecode = 'HG20'
    and nvl(h.ibillstatus, 8) = 1
    and b.csendcalbody = '0001AS10000000007FP7'
    and nvl(b.nreplynum, 0) > nvl(b.nfinishponder, 0)
    and h.pk_requtrain_h not in
        (select hgts_ponder_b_181.pk_upperbill
           from hgts_ponder_h_181
          inner join hgts_ponder_b_181
             on hgts_ponder_h_181.pk_ponder_h =
                hgts_ponder_b_181.pk_ponder_h
          where hgts_ponder_h_181.pk_org = '0001AS10000000007FP7'
            and nvl(hgts_ponder_h_181.dr, 0) = 0
            and nvl(hgts_ponder_b_181.dr, 0) = 0
            and hgts_ponder_h_181.ibillstatus = 8
            and (hgts_ponder_h_181.freceorsend is null or
                hgts_ponder_h_181.freceorsend = 1)
            and hgts_ponder_h_181.vechistatus <> 6
            and hgts_ponder_h_181.cvechmanid = '1003YS10000000009BNU')
    and car.pk_vehiclemngdoc = '1003YS10000000009BNU'
    and h.vbillcode = '3322'
    and b.pk_custdoc = '1003A110000000000PMO'
    and b.cmaterialid = '1003YS10000000000IK1'

发表于 2014-5-8 18:29:43 | 显示全部楼层
not in 部分先换成not exists试一下。
使用道具 举报

回复

发表于 2014-5-8 18:31:35 | 显示全部楼层
自己也可以看下sql的查询计划,看到底慢在哪个地方
使用道具 举报

回复

发表于 2014-5-8 21:35:28 | 显示全部楼层
NsGFr 发表于 2014-5-8 18:31
自己也可以看下sql的查询计划,看到底慢在哪个地方

not in 那部分改一改应该就可以提高不少的速度
使用道具 举报

回复

深秋的黎明的头像 楼主
发表于 2014-5-9 09:38:25 | 显示全部楼层
NsGFr 发表于 2014-5-8 18:29
not in 部分先换成not exists试一下。

恩,会的。表连接也很多
使用道具 举报

回复

发表于 2014-5-16 16:45:57 | 显示全部楼层
1、子查询没有限定条件
使用道具 举报

回复

发表于 2014-5-16 16:46:09 | 显示全部楼层
2、distinct一定要用吗?
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部