暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【oushuDB】UPDATE异常SQL优化

原创 xiao_mini 2024-01-17
123

基本信息

系统 : CentOS Linux release 7.4.1708 (Core)
产品 : OushuDB
模块 : DB
子模块 : -

描述详述

-- 该SQL逻辑太复杂,太冗余,可能存在浪费资源 -- 原始SQL UPDATE DEMO.FA_CH SET CEE = (SELECT PCE FROM DEMO.DD_CP WHERE UPPER(SC) = UPPER(DEMO.FA_CH.CEE) AND UPPER(SSYS) = UPPER('DSYS') AND UPPER(CODE_TYPE) = (SELECT UPPER(CODE_TYPE) FROM DEMO.DD_CTD WHERE UPPER(SSYS) = UPPER('DSYS') AND UPPER(STN) = UPPER('SS_TAB_NAME') AND UPPER(SV) = UPPER('SS_VALUE'))) WHERE CEE IN (SELECT SC FROM DEMO.DD_CP WHERE UPPER(SSYS) = UPPER('DSYS') AND UPPER(CODE_TYPE) = (SELECT UPPER(CODE_TYPE) FROM DEMO.DD_CTD WHERE UPPER(SSYS) = UPPER('DSYS') AND UPPER(STN) = UPPER('SS_TAB_NAME') AND UPPER(SV) = UPPER('SS_VALUE'))) AND EXISTS (SELECT 1 FROM DEMO.DD_CTD WHERE UPPER(SSYS) = UPPER('DSYS') AND UPPER(STN) = UPPER('SS_TAB_NAME') AND UPPER(SV) = UPPER('SS_VALUE')) and DEMO.FA_CH.DW_DATA_DT = '2021-04-18';

原因

解决方案

-- 优化SQL UPDATE DEMO.FA_CH H set CEE =M.PCE from DEMO.DD_CP M, ( SELECT 1 as flag FROM DEMO.DD_CTD WHERE UPPER(SSYS) = UPPER('DSYS') AND UPPER(STN) = UPPER('SS_TAB_NAME') AND UPPER(SV) = UPPER('SS_VALUE') ) tmp_is_work where UPPER(M.SSYS) = UPPER('DSYS') AND UPPER(M.CODE_TYPE) = (SELECT UPPER(CODE_TYPE) FROM DEMO.DD_CTD WHERE UPPER(SSYS) = UPPER('DSYS') AND UPPER(STN) = UPPER('SS_TAB_NAME') AND UPPER(SV) = UPPER('SS_VALUE')) and H.DW_DATA_DT = '2021-04-18' and H.CEE = M.SC and tmp_is_work.flag=1 ;
文章转载自xiao_mini,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论