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')--更改部分
                    )

  • 相关阅读:
    selenium笔记
    gbase笔记
    oracle向gbase数据迁移须知
    字符串表达式的计算
    Struts2的安装
    JSP+MySQL中文乱码
    HTML:<input type="text">文本框不可编辑的方式
    HTML中使用<input>添加的按钮打开一个链接
    AS3.0:给图片添加滤镜模糊与斜角效果
    SQLServer 2008以上误操作数据库恢复方法—日志尾部备份
  • 原文地址:https://www.cnblogs.com/guipeng/p/6441985.html
Copyright © 2011-2022 走看看