哆啦CMeng 2018-08-10 09:32 采纳率: 0%
浏览 2486
已结题

SQL写的太长,效率不高,查询问题优化

经理说,下面这个SQL可读性太差了,让我改改,看的我一脸懵逼,麻烦大神帮我改改。
SELECT YBB.JGBJLIST_CPMC AS CPMC,
YBB.{0} AS YBBJG,
MBBB.{0} AS MBBBJG,
YBB.JGBJLIST_CPID,
YBB.JGBJLIST_PARENTID,
(MBBB.{0}-YBB.{0}) as JDC,
case when YBB.{0}=0 then '0%' else round(((MBBB.{0}-YBB.{0})/YBB.{0})*100,2) ||'%' end as XDC
FROM JGBJLIST YBB
LEFT JOIN JGBJLIST MBBB
ON YBB.JGBJLIST_CPID = MBBB.JGBJLIST_CPID
WHERE YBB.JGBJLIST_BJBBID =:YBBID
AND MBBB.JGBJLIST_BJBBID =:MBBBID
UNION ALL
SELECT BJ.JGBJLIST_CPMC AS CPMC, BJ.{0} AS YBBJG, null AS MBBBJG,BJ.JGBJLIST_CPID,
BJ.JGBJLIST_PARENTID,
(0-BJ.{0}) as JDC,
case when BJ.{0}=0 then '0%' else round(((0-BJ.{0})/BJ.{0})*100,2) ||'%' end as XDC
FROM JGBJLIST BJ
WHERE BJ.JGBJLIST_CPID NOT IN
(SELECT YBB.JGBJLIST_CPID
FROM JGBJLIST YBB
LEFT JOIN JGBJLIST MBBB
ON YBB.JGBJLIST_CPID = MBBB.JGBJLIST_CPID
WHERE YBB.JGBJLIST_BJBBID =:YBBID
AND MBBB.JGBJLIST_BJBBID =:MBBBID )
AND JGBJLIST_BJBBID =:YBBID
UNION ALL
SELECT BJ.JGBJLIST_CPMC AS CPMC, null AS YBBJG, BJ.{0} AS MBBBJG,BJ.JGBJLIST_CPID,
BJ.JGBJLIST_PARENTID,
(BJ.{0}-0) as JDC,
'0%'as XDC
FROM JGBJLIST BJ
WHERE BJ.JGBJLIST_CPID NOT IN
(SELECT YBB.JGBJLIST_CPID
FROM JGBJLIST YBB
LEFT JOIN JGBJLIST MBBB
ON YBB.JGBJLIST_CPID = MBBB.JGBJLIST_CPID
WHERE YBB.JGBJLIST_BJBBID = :YBBID
AND MBBB.JGBJLIST_BJBBID = :MBBBID )
AND JGBJLIST_BJBBID =:MBBBID

  • 写回答

10条回答 默认 最新

  • devmiao 2018-08-10 15:11
    关注
    评论

报告相同问题?