注册

关联update,超时。

2023/08/12 1005 11

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:麒麟
【CPU】:
【问题描述】*:update 语句执行到超时没结束。请大佬分析原因。
arc_houseinfo 大约50多万条。 下面子句(select houseGuid from exp_reqinfo a,exp_reqlist b
where a.payno='51230811000133'
and (a.reqno = b.reqno or a.projectNo = b.projectNo and b.reqNo is null))的结果集,计算结果是2条记录。

  update arc_houseinfo t set (balance,frozen,exptotalamount,transmitState)
  =
    (select balance,frozen,exptotalamount, func_getTransmitStateForUpdate(transmitstate,houseGuid,'03','N')
     from
        (select a.houseguid,nvl(b.balance,0) - nvl(a.amount,0) balance, nvl(b.frozen,0) - nvl(a.amount,0) frozen,
                nvl(b.exptotalamount,0) + nvl(a.amount,0) exptotalamount,b.transmitstate
         from (select b.houseGuid,sum(b.amount) amount from exp_reqinfo  a,exp_reqlist b
               where a.payno='51230811000133'
                 and (a.reqno = b.reqno or a.projectNo = b.projectNo and b.reqNo is null)
                 group by b.houseGuid
               ) a,
              arc_houseinfo b
         where a.houseguid = b.sysguid
        ) t1
     where t.sysguid = t1.houseGuid
    )
    where sysGuid in(select houseGuid from exp_reqinfo  a,exp_reqlist b
                      where a.payno='51230811000133'
                      and (a.reqno = b.reqno or a.projectNo = b.projectNo and b.reqNo is null));

执行计划
1 #UPDATE : [0, 0, 0]; table(ARC_HOUSEINFO), type(select), mpp_opt(0), hp_opt(0)
2 #NTTS2: [224, 1, 648]; for_mdis(FALSE)
3 #UFLT: [224, 1, 648]; IS_TOP_1(TRUE)
4 #PRJT2: [224, 1, 648]; exp_num(5), is_atom(FALSE)
5 #HASH LEFT SEMI JOIN2: [224, 1, 648]; KEY_NUM(1); KEY(T.SYSGUID=DMTEMPVIEW_889197310.colname) KEY_NULL_EQU(0)
6 #NEST LOOP INDEX JOIN2: [211, 1, 648]
7 #PRJT2: [211, 1, 588]; exp_num(5), is_atom(FALSE)
8 #PRJT2: [211, 1, 588]; exp_num(5), is_atom(FALSE)
9 #HAGR2: [211, 1, 588]; grp_num(1), sfun_num(5), distinct_flag[0,0,0,0,0]; slave_empty(0) keys(T.ROWID)
10 #HASH RIGHT JOIN2: [113, 526904, 588]; key_num(1), ret_null(0), KEY(T1.HOUSEGUID=T.SYSGUID)
11 #PRJT2: [13, 1, 528]; exp_num(5), is_atom(FALSE)
12 #NEST LOOP INDEX JOIN2: [13, 1, 528]
13 #PRJT2: [12, 1, 342]; exp_num(2), is_atom(FALSE)
14 #HAGR2: [12, 1, 342]; grp_num(1), sfun_num(1), distinct_flag[0]; slave_empty(0) keys(B.HOUSEGUID)
15 #UNION FOR OR2: [11, 196, 342]; key_num(2), outer_join(-)
16 #SLCT2: [5, 98, 342]; B.REQNO IS NULL
17 #NEST LOOP INDEX JOIN2: [5, 98, 342]
18 #SLCT2: [1, 49, 156]; A.PAYNO = '51230811000133'
19 #CSCN2: [1, 1962, 156]; INDEX33566260(EXP_REQINFO as A)
20 #BLKUP2: [3, 2, 48]; INX_EXP_REQLIST_PROJECTNO(B)
21 #SSEK2: [3, 2, 48]; scan_type(ASC), INX_EXP_REQLIST_PROJECTNO(EXP_REQLIST as B), scan_range[A.PROJECTNO,A.PROJECTNO]
22 #NEST LOOP INDEX JOIN2: [5, 98, 342]
23 #SLCT2: [1, 49, 156]; A.PAYNO = '51230811000133'
24 #CSCN2: [1, 1962, 156]; INDEX33566260(EXP_REQINFO as A)
25 #BLKUP2: [3, 2, 48]; INX_EXP_REQLIST_REQNO(B)
26 #SSEK2: [3, 2, 48]; scan_type(ASC), INX_EXP_REQLIST_REQNO(EXP_REQLIST as B), scan_range[A.REQNO,A.REQNO]
27 #BLKUP2: [1, 1, 48]; INDEX33566195(B)
28 #SSEK2: [1, 1, 48]; scan_type(ASC), INDEX33566195(ARC_HOUSEINFO as B), scan_range[A.HOUSEGUID,A.HOUSEGUID]
29 #SSCN: [61, 526904, 60]; INDEX33566195(ARC_HOUSEINFO as T)
30 #CSEK2: [1, 1, 0]; scan_type(ASC), INDEX33566042(ARC_HOUSEINFO as T), scan_range[TMP_UPD_1.REFED_YY_9,TMP_UPD_1.REFED_YY_9]
31 #PRJT2: [11, 196, 312]; exp_num(1), is_atom(FALSE)
32 #UNION FOR OR2: [11, 196, 312]; key_num(2), outer_join(-)
33 #SLCT2: [5, 98, 312]; B.REQNO IS NULL
34 #NEST LOOP INDEX JOIN2: [5, 98, 312]
35 #SLCT2: [1, 49, 156]; A.PAYNO = '51230811000133'
36 #CSCN2: [1, 1962, 156]; INDEX33566260(EXP_REQINFO as A)
37 #BLKUP2: [3, 2, 48]; INX_EXP_REQLIST_PROJECTNO(B)
38 #SSEK2: [3, 2, 48]; scan_type(ASC), INX_EXP_REQLIST_PROJECTNO(EXP_REQLIST as B), scan_range[A.PROJECTNO,A.PROJECTNO]
39 #NEST LOOP INDEX JOIN2: [5, 98, 312]
40 #SLCT2: [1, 49, 156]; A.PAYNO = '51230811000133'
41 #CSCN2: [1, 1962, 156]; INDEX33566260(EXP_REQINFO as A)
42 #BLKUP2: [3, 2, 48]; INX_EXP_REQLIST_REQNO(B)
43 #SSEK2: [3, 2, 48]; scan_type(ASC), INX_EXP_REQLIST_REQNO(EXP_REQLIST as B), scan_range[A.REQNO,A.REQNO]

image.png

回答 0
暂无回答
扫一扫
联系客服