求哪位大神看看,下面这段sql能优化吗?

0
SELECT
     BR_NO,                       --机构号
     SUM(CASE WHEN  SUBSTR(A.ACC_HRT,0,3) IN ('122', '123', '124', '125', '126', '127', '128', '130') OR              SUBSTR(A.ACC_HRT,0,5)='12911'AND A.DC_IND = '2' THEN -A.AMT
               WHEN  SUBSTR(A.ACC_HRT,0,3) IN ('122', '123', '124', '125', '126', '127', '128', '130') OR SUBSTR(A.ACC_HRT,0,5)='12911' AND A.DC_IND = '1' THEN A.AMT
     END)/10000 AS DKYE,          --贷款余额
     SUM(CASE WHEN A.ACC_HRT IN ('13001', '13002', '13003', '13004') AND A.DC_IND = '2' THEN -A.AMT
               WHEN A.ACC_HRT IN ('13001', '13002', '13003', '13004') AND A.DC_IND = '1' THEN  A.AMT
         END)/10000 AS BLDK,      --不良贷款
     SUM(CASE WHEN  SUBSTR(A.ACC_HRT,0,3) IN ('205','201','217','251','221','222','223','243','234','235','236','211','215','226','227') OR
                    SUBSTR(A.ACC_HRT, 0, 5) IN ('20201', '20202') AND A.DC_IND = '2' THEN A.AMT
               WHEN  SUBSTR(A.ACC_HRT,0,3) IN ('205','201','217','251','221','222','223','243','234','235','236','211','215','226','227') OR
                    SUBSTR(A.ACC_HRT, 0, 5) IN ('20201', '20202') AND A.DC_IND = '1' THEN -A.AMT
     END)/10000 AS CKYE,          --存款余额
     SUM(CASE WHEN SUBSTR(A.ACC_HRT, 0, 3) IN ('211', '215') OR SUBSTR(A.ACC_HRT, 0, 5) = '20202' AND A.DC_IND = '2' THEN A.AMT
               WHEN SUBSTR(A.ACC_HRT, 0, 3) IN ('211', '215') OR SUBSTR(A.ACC_HRT, 0, 5) = '20202' AND A.DC_IND = '1' THEN -A.AMT
         END)/10000 AS CXCK,      --储蓄存款
     SUM(CASE WHEN A.ACC_HRT IN ('23101', '23102', '23103', '23104', '23110') THEN A.AMT
         END)/10000 AS XZYYHJK,   --向中央银行借款
     SUM(CASE WHEN SUBSTR(A.ACC_HRT, 0, 3) IN ('301', '302', '303', '304', '312') THEN A.AMT
         END)/10000 AS SYZQYN,    --所有者权益类
     SUM(CASE WHEN A.ACC_HRT = '31208' THEN A.AMT
         END)/ 10000 AS WFPLRN,   --未分配利润
     SUM(CASE WHEN SUBSTR(A.ACC_HRT, 0, 3) IN ('501','502','511','514','506','538','512','513','515') THEN A.AMT
               WHEN SUBSTR(A.ACC_HRT, 0, 3) IN ('521','522','527','537','533','523','530','532','534','535','529','531','536','539','540') THEN -A.AMT  
         END)/10000 AS LRZE       --利润总额
FROM test1.DC_LOG_BAK A, test1.BRNO_PARENTSUNTIL B
WHERE A.TX_OPN_BR_NO = B.BR_NO_ST
  AND A.STS = '0'
AND CUR_NO = '01'
AND A.tx_date = '${date}'   
已邀请:
0

seng - 从事BI、大数据、数据分析工作 2017-06-12 回答

test1.DC_LOG_BAK A 上有tx_date的索引应该不会慢吧?
慢的话,你要把执行计划拿出来看看?

要回复问题请先登录注册