SELECT count(1)
FROM (SELECT A.TRANDT,
A.ID,
A.BUSI_CHANNEL,
A.NET_WORK,
A.TELLER,
A.LOGIN_NAME,
A.USER_NAME,
A.SWIFTNUMBER,
A.TRANSACTIONCODE,
CAST(CASE
WHEN REGEXP_LIKE(A.TRANAM, '^-?[0-9]+(.[0-9]+)?$') THEN
A.TRANAM
ELSE
''
END AS NUMBER(20, 2)) TRANAM,
NVL(C.ZPZS, 0) MASTERNO,
DECODE(A.SIGNFILEPATH, NULL, 0, 1) MASTERNO2,
NVL(C.FPZS, 0) DEPUTYNO,
NVL(C.FJZS, 0) ATTACHNO,
NVL(C.DZFJZS, 0) ELECATTACHNO,
NVL(C.NOFLZS, 0) NOFLZS,
A.ACCTNO,
A.ACCTNA,
A.TRANTIME,
A.SIGNFILEPATH,
A.ACCOUNT_MARK,
A.PAPERLESS_MARK,
NVL(EPS.PACKAGE_STATE, '-1') RKSTATE,
A.TELLER || '-' || A.USER_NAME TELLERNAME,
CASE
WHEN NVL2(D.BUSI_ID, '1', '2') = '1' THEN
'2'
WHEN NVL2(D.BUSI_ID, '1', '2') = '2' AND
ENC.NEEDMASTERNO -
(NVL(C.ZPZS, 0) + DECODE(A.SIGNFILEPATH, NULL, 0, 1) -
NVL(C.ZFZPZS, 0)) <= 0 AND
ENC.NEEDDEPUTYNO - NVL(C.FPZS, 0) - NVL(C.ZFFPZS, 0) <= 0 AND
ENC.NEEDENCLOSURENO - NVL(C.FJZS, 0) - NVL(C.ZFFJS, 0) <= 0 THEN
'0'
ELSE
'1'
END ERRORFLAG
FROM (select t.TRANDT,
t.ID,
t.BUSI_CHANNEL,
t.NET_WORK,
t.TELLER,
t.LOGIN_NAME,
t.USER_NAME,
t.SWIFTNUMBER,
t.TRANSACTIONCODE,
t.TRANAM,
t.SIGNFILEPATH,
t.ACCTNO,
t.ACCTNA,
t.TRANTIME,
t.ACCOUNT_MARK,
t.PAPERLESS_MARK,
t.LEGALPERSONNUMBER
from table(fun_get_edmp_busi_info_0822('20190728',
'20190815',
'023',
'320223032',
'320223032104')) t) A
INNER JOIN EDMP_SETTLE_ACCOUNTS ESA
ON A.TELLER = ESA.TELLER
AND A.NET_WORK = ESA.Organ
and A.LEGALPERSONNUMBER = '023'
and A.TRANDT = ESA.TRANDT
LEFT JOIN FUN_GET_edmp_trans_cert_num_0822(A.TRANDT, A.SWIFTNUMBER, '023') C
ON A.SWIFTNUMBER = C.LSH
and A.LEGALPERSONNUMBER = frorg_cdoe
and A.TRANDT = C.WORK_DATE
LEFT JOIN (select ID,
TELLER,
NET_WORK,
crt_no,
TRANDT,
NEEDMASTERNO,
NEEDDEPUTYNO,
NEEDENCLOSURENO
from table(FUN_GET_edmp_neccessary_certno_0822('20190728',
'20190815',
'023',
'320223032',
'320223032104'))) ENC
on A.ID = ENC.ID
and A.TELLER = ENC.TELLER
and A.NET_WORK = ENC.NET_WORK
and A.LEGALPERSONNUMBER = enc.crt_no
and A.TRANDT = ENC.TRANDT
LEFT JOIN EDMP_PACKAGE_STATE EPS
on EPS.GROUP_ID = ESA.GROUP_NUM
and EPS.ORGAN = ESA.Organ
AND EPS.TRANDT = ESA.TRANDT
LEFT JOIN EDMP_SETTLE_ACCOUNTS_INFO D
ON A.SWIFTNUMBER = D.SWIFTNUMBER
and A.TELLER = d.teller
and A.NET_WORK = d.org_code
AND A.TRANDT = D.TRANDT
inner join EDMP_ONLINEPZ EO
on A.NET_WORK = EO.ORG_CODE
and A.TRANDT >= TO_CHAR(EO.ONLINE_TIME, 'yyyymmdd')
WHERE 1 = 1
AND A.NET_WORK = '320223032'
AND A.TELLER = '320223032104'
AND NVL(EPS.PACKAGE_STATE, 0) < 2
AND A.LEGALPERSONNUMBER = '023')
WHERE (TRANDT >= '20190728' AND TRANDT <= '20190815')
响应时间较快,但CPU占用非常大,16C,并发30就执行100%
执行计划如下:
oracle语句CPU过高问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
悬赏问题
- ¥15 一道python难题
- ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
- ¥15 牛顿斯科特系数表表示
- ¥15 arduino 步进电机
- ¥20 程序进入HardFault_Handler
- ¥15 oracle集群安装出bug
- ¥15 关于#python#的问题:自动化测试
- ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
- ¥15 教务系统账号被盗号如何追溯设备
- ¥20 delta降尺度方法,未来数据怎么降尺度