报表中的一个查询,每次跳转到这张报表时都需要3-5分钟的时间,有时候会直接卡死。就是因为这个查询,单独执行查询的时候也是需要3分钟左右,请问能优化或者修改吗?
其中,查询最慢的一段代码:
select ckje.FH_发货单编号,ckje.FLBM_分类编码,ckje.HQBM_货权单位编码,SUM(ckje.ckj) as ckj
from (select ck.FH_发货单编号,jsfh.HQBM_货权单位编码,jsfh.FLBM_分类编码,jsfh.JSD_合同编号
,SUM(ck.cksl*jsfh.DJ_结算价) ckj
from (select fh.HQBM_货权单位编码,fl.FLBM_分类编码,js.JSD_合同编号,fh.FH_发货单编号
,js.DJ_结算价
from
XS_结算单 js,
CY_发货单主表 fh,
JCP_产品信息 cp,
JFL_产品分类 fl
where
js.JSD_结算单编号 = fh.JS_结算单编号
and fh.CPBM_产品编码=cp.CPBM_产品编码
and cp.FLBM_所属分类编码=fl.FLBM_分类编码
and fh.ZT!='F'
and js.ZT!='F'
group by
fh.HQBM_货权单位编码,fl.FLBM_分类编码,js.JSD_合同编号,fh.FH_发货单编号,js.DJ_结算价) as jsfh
left join (select
ck.FH_发货单编号,
ck.CK_出库单编号,
SUM(mx.SL_出库数量) as cksl
from
CY_出库单主表 ck,
CY_出库单明细表 mx,
JCP_产品信息 cp,
JFL_产品分类 fl
where
ck.ID=mx.PK_出库单主表主键
and mx.CPBM_产品编码=cp.CPBM_产品编码
and cp.FLBM_所属分类编码=fl.FLBM_分类编码
and ck.ZT!='F'
and ck.CK_出库类型='X'
group by
ck.CK_出库单编号,ck.FH_发货单编号)as ck
on jsfh.FH_发货单编号=ck.FH_发货单编号
group by ck.FH_发货单编号,jsfh.HQBM_货权单位编码,jsfh.FLBM_分类编码,jsfh.JSD_合同编号) as ckje
group by ckje.FH_发货单编号,ckje.FLBM_分类编码,ckje.HQBM_货权单位编码
希望能给出修改意见或者不合理之处,但是不能改变查询结果