Qian__Hao 2017-06-09 09:48 采纳率: 0%
浏览 1902
已结题

sql执行时间过长,求帮忙看看,能不能优化

(
SELECT
b.itemcode,
b.directionidx,
c.printname,
a.closedate,
a.serialno,
a.itemtype,
a.branchcode,
a.centercode,
a.yearmonth,
a.accbooktype,
a.accbookcode,
a.closedate,
a.accountcode,
a.checktype,
a.checkno,
a.currency,
a.itemcode,
a.directionidx,
b.remark,
b.debitsource,
b.creditsource,
b.debitdest,
b.creditdest,
a.balancesource,
a.balancedest,
a.operatecode,
a.operatebranch,
a.operatedate,
a.approvecode,
a.approvebranch,
a.approvedate,
a.checkflag,
a.checkyearmonth,
a.checknum,
a.dailytype,
a.voucherno,
a.receflag,
a.detailidx,
a.flag
FROM
AccDailyRec AS a,
accsubvoucherhis AS b,
(
(
SELECT
printname,
itemcode,
directionidx,
centercode
FROM
accitemvalidate
)
UNION ALL
(
SELECT
itemname AS printname,
itemcode,
'00' AS directionidx,
centercode
FROM
accitemdefine
)
) c
WHERE
a.centercode = b.centercode
AND a.yearmonth = b.yearmonth
AND a.voucherno = b.voucherno
AND c.itemcode = b.itemcode
AND c.directionidx = b.directionidx
AND c.centercode = b.centercode
AND b.itemcode <> '1001'
AND EXISTS (
SELECT
1
FROM
accmainvoucherhis er
WHERE
er.centercode = a.centercode
AND er.yearmonth = a.yearmonth
AND er.voucherno = a.voucherno
AND er.voucherflag = '4'
)
AND a.AccBookType = '02'
AND a.CenterCode = '1000000000'
AND a.AccBookCode = '11'
AND a.BranchCode = '1000000000'
AND a.ItemType = '0'
AND a.AccountCode = 'ZZZ'
AND 1 = 1
AND a.CloseDate >= '2017-03-01'
AND a.CloseDate <= '2017-03-31'
ORDER BY
voucherdate,
voucherno
)
UNION ALL
(
SELECT
b.itemcode,
b.directionidx,
c.printname,
a.closedate,
a.serialno,
a.itemtype,
a.branchcode,
a.centercode,
a.yearmonth,
a.accbooktype,
a.accbookcode,
a.closedate,
a.accountcode,
a.checktype,
a.checkno,
a.currency,
a.itemcode,
a.directionidx,
b.remark,
b.debitsource,
b.creditsource,
b.debitdest,
b.creditdest,
a.balancesource,
a.balancedest,
a.operatecode,
a.operatebranch,
a.operatedate,
a.approvecode,
a.approvebranch,
a.approvedate,
a.checkflag,
a.checkyearmonth,
a.checknum,
a.dailytype,
a.voucherno,
a.receflag,
a.detailidx,
a.flag
FROM
AccDailyRec AS a,
accsubvoucher AS b,
(
(
SELECT
printname,
itemcode,
directionidx,
centercode
FROM
accitemvalidate
)
UNION ALL
(
SELECT
itemname AS printname,
itemcode,
'00' AS directionidx,
centercode
FROM
accitemdefine
)
) c
WHERE
a.centercode = b.centercode
AND a.yearmonth = b.yearmonth
AND a.voucherno = b.voucherno
AND c.itemcode = b.itemcode
AND c.directionidx = b.directionidx
AND c.centercode = b.centercode
AND b.itemcode <> '1001'
AND EXISTS (
SELECT
1
FROM
accmainvoucher er
WHERE
er.centercode = a.centercode
AND er.yearmonth = a.yearmonth
AND er.voucherno = a.voucherno
AND er.voucherflag <> '4'
)
AND a.AccBookType = '02'
AND a.CenterCode = '1000000000'
AND a.AccBookCode = '11'
AND a.BranchCode = '1000000000'
AND a.ItemType = '0'
AND a.AccountCode = 'ZZZ'
AND 1 = 1
AND a.CloseDate >= '2017-03-01'
AND a.CloseDate <= '2017-03-31'
GROUP BY
b.voucherno,
b.itemcode
ORDER BY
voucherdate,
voucherno
)

  • 写回答

4条回答 默认 最新

  • yuefeng1110 2017-06-09 10:26
    关注

    你的这个查询这么多uniol all 看来看去就是那几张表,看看执行计划吧,貌似都是全表扫描

    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型