求大神帮我优化一下语句,我这段语句查询出来需要5分钟左右,

hou582123849 2017-04-05 04:58:35
SELECT '货款部分' as cls,
stlchk.stlchkno,
stlchk.mkedat,
(select empdes from emp where empid=stlchk.mkr) as mkr,
gdsbuy.srcbllno,
round(sum(gdsbuy.amt),2) as bivcdtl_amt,
round(sum(gdsbuy.patamt),2) as bivcdtl_patamt,
(select distinct '['+rtrim(bll.bllid)+']'+blldes from bll where bll.bllid=gdsbuy.bllid) as blldes,
gdsbuy.ctno,
(select openaccbnkr from prv where prvid=stlchk.prvid) as op,
(select actno from prv where prvid=stlchk.prvid) as actno,
(select bnk from prv where prvid=stlchk.prvid) as abnk,
(select dptid from dpt where dptid in (select savdptid from stkin where stkinno=gdsbuy.srcbllno)) as fd,
(select '['+rtrim(prvid)+']'+prvdes from prv where prvid = stlchk.prvid) as prvdes
FROM ((stlchk inner join stlbll on stlchk.stlchkno=stlbll.stlchkno) inner join bivc on bivc.bivcno = stlbll.lnkstlno) inner join gdsbuy on bivc.bivcno=gdsbuy.lnkivcno
WHERE stlchk.prvid like :as_prvid and
stlchk.mkedat>= :as_bdate and stlchk.mkedat<= :as_edate and stlchk.mkr in (select empid from emp where dptid <>'311') and
gdsbuy.bstlflg='y'
GROUP BY stlchk.stlchkno,
stlchk.prvid,
stlchk.mkedat,
stlchk.mkr,
gdsbuy.bllid,
gdsbuy.srcbllno,
gdsbuy.ctno
union
SELECT '费用部分' as cls,
stlchk.stlchkno,
stlchk.mkedat,
(select empdes from emp where empid=stlchk.mkr) as mkr,
'' as srcbllno,
0 as bivcdtl_amt,
sum(stlchkdtl.feeamt) as bivcdtl_patamt,
(select '['+rtrim(feeitm.feeitmid)+']'+feeitm.feeitmdes from feeitm where feeitm.feeitmid = stlchkdtl.feeitmid ) as blldes,
'' as ctno,
'' as op,
'' as actno,
'' as abnk,
'' as fd,
'' as prvdes
FROM stlchk,
stlchkdtl
WHERE stlchk.prvid like :as_prvid and stlchkdtl.stlchkno=stlchk.stlchkno and
stlchk.mkedat>= :as_bdate and stlchk.mkedat<= :as_edate and stlchk.mkr in (select empid from emp where dptid <>'311')
group by stlchk.stlchkno,
stlchk.mkedat,
stlchk.mkr,
stlchkdtl.feeitmid
小弟实在没啥分了...跪谢各位大神!
...全文
696 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sbks 2017-04-15
  • 打赏
  • 举报
回复
对where条件里出现的字段,做索引
ashinhao 2017-04-14
  • 打赏
  • 举报
回复
可以先把对stlchk的表的条件进行处理之后 再和其他的表进行关联 然后减少子查询 用Left join 替代
hou582123849 2017-04-08
  • 打赏
  • 举报
回复
引用 1楼seven125 的回复:
in 换成exists union 换成 union all
更慢了~
hou582123849 2017-04-06
  • 打赏
  • 举报
回复
引用 3楼tomok 的回复:
够复杂的 哈哈
是不是还需要表结构
tomok 2017-04-06
  • 打赏
  • 举报
回复
够复杂的 哈哈
hou582123849 2017-04-06
  • 打赏
  • 举报
回复
谢谢,一会儿我先试试
seven125 2017-04-05
  • 打赏
  • 举报
回复
in 换成exists union 换成 union all

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧