当SQL出现问题,能从执行计划中快速的定位哪部分出现问题很重要,SQL文本如下(为保证客户隐私,已经将注释和文字部分去掉):
SELECT /*+ index(i IDX_INVM_BEC)*/ RQ,JGM,BZ,CUSTOMER_TYPE,
B.CUSTOMER_NO,
B.CUSTOMER_NAME AS DKHM,
B.ACCT_NO DKZH,
B.STATUS,
B.LOAN_BAL,
P,
LX,
NVL((SELECT A.ACCT_NO_DESC || A.ACCT_NO_ALL2
FROM INVM_ZMQ A
WHERE A.ACCT_NO=I.ACCT_NO
AND A.ZHLB='3'),I.ACCT_NO) AS CKZH,
I.CURR_VAL,
(CASE WHEN B.TRANSFER_ACCT=I.ACCT_NO THEN '嘻嘻嘻' ELSE '' END) AS SM
FROM(
SELECT B.EXTDATE AS RQ,
B.BRANCH_NO AS JGM,
B.CURRENCY AS BZ,
C.CUSTOMER_TYPE,
B.CUSTOMER_NO,
C.CUSTOMER_NAME,
B.ACCT_NO,
'啊啊' AS STATUS,
B.LOAN_BAL,
B.UNPD_PRIN_BAL AS P,
ROUND(B.CAP_UNPD_INT,2)+
(CASE WHEN B.REPAY_SCHED IN ('M','G') OR L.REPAY_SCHED IN ('M','G') THEN 0
ELSE (CASE WHEN L.PIA_CAPN_FREQ='S' AND L.PAST_DUE_CAPN_FREQ='S'
THEN ROUND(B.THEO_UNPD_ARR_PRN,2)
+(CASE WHEN L.FINE1_COMPD_OPT='Y' THEN ROUND(B.THEO_UNPD_ARRS_INT,2) ELSE 0 END)
+(CASE WHEN L.FINE2_COMPD_OPT='Y' THEN ROUND(B.THEO_UNP