首页 > 数据库技术 > 详细

Oracle-SQL程序优化2

时间:2017-02-25 17:07:59      阅读:215      评论:0      收藏:0      [点我收藏+]

有时候写得不规范的SQL语句真的是占用很多时间

以下是我在工作中发现的规律,如果字段过多的使用函数,尽量不要将这些字段串联在一起做匹配或查询条件,比如红色注释部分,在执行红色部分的时候

这个SQL程序是执行了7分多钟,但是将函数分开做匹配的户查询时间不用1秒:

SELECT EBELN||‘_‘||LTRIM(SUBSTR(POSNR,1,6),‘0‘)||‘_‘||LTRIM(SUBSTR(POSNR,7,4),‘0‘) SO_LINE_ID,
EBELN,
SZ.MATNR,
SZ.POSNR,
WERKS
FROM SAPSR3.ZTSD_008_1@SAP_SEP SZ
WHERE
TRIM(SZ.ZTO_EC) IS NULL
AND
SZ.ZSTATE=‘R‘
AND
TRIM(WERKS) IN(‘2501‘)
AND NOT EXISTS (SELECT NULL FROM SEINEEBS.FP_SALE_REQ_LINES_RPY@EC FS WHERE FS.SO_LINE_ID = EBELN||‘_‘||LTRIM(SUBSTR(POSNR,1,6),‘0‘)||‘_‘||LTRIM(SUBSTR(POSNR,7,4),‘0‘))
AND EXISTS (SELECT NULL FROM STG.SAP_ZTSD_002 ST
WHERE TRIM(ST.EBELN_IMAGE) IS NOT NULL
  AND EXISTS (SELECT NULL FROM STG.SAP_EKKO_RS EKKO,STG.SAP_EKPO_RS EKPO
              WHERE EKKO.EBELN = EKPO.EBELN
                --AND LTRIM(ST.EBELN,‘0‘)||‘_‘||LTRIM(ST.EBELP,‘0‘) = LTRIM(EKPO.EBELN,‘0‘)||‘_‘||LTRIM(EKPO.EBELP,‘0‘)
                AND LTRIM(ST.EBELN,‘0‘)=LTRIM(EKPO.EBELN,‘0‘) AND LTRIM(ST.EBELP,‘0‘)=LTRIM(EKPO.EBELP,‘0‘)--更改部分
                AND NVL(EKKO.RESWK,EKPO.WERKS) NOT IN (‘2021‘,‘2022‘,‘2023‘))
                --AND LTRIM(ST.EBELN_IMAGE,‘0‘)||‘_‘||LTRIM(ST.EBELP_IMAGE,‘0‘) = LTRIM(SZ.EBELN,‘0‘)||‘_‘||LTRIM(SZ.EBELP_STO,‘0‘)
                AND LTRIM(ST.EBELN_IMAGE,‘0‘)= LTRIM(SZ.EBELN,‘0‘) AND LTRIM(ST.EBELP_IMAGE,‘0‘)=LTRIM(SZ.EBELP_STO,‘0‘)--更改部分
                )

Oracle-SQL程序优化2

原文:http://www.cnblogs.com/guipeng/p/6441985.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!