zoukankan      html  css  js  c++  java
  • Oracle-SQL程序优化案例二

    有时候写得不规范的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')--更改部分
                    )

  • 相关阅读:
    idea快捷的输出常用语句
    OneinStack基础搭建typecheo轻量级博客
    自动化框架介绍及使用
    jenkins配置自动化
    selenium模拟鼠标点击
    Linux下安装nginx
    解决“chrome正受到自动测试软件的控制”信息栏显示问题
    Git 常用操作
    ZendStudio自定义代码补全,自定义代码段
    07-python之装饰器
  • 原文地址:https://www.cnblogs.com/guipeng/p/6441985.html
Copyright © 2011-2022 走看看