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

  • 相关阅读:
    Supreme(ง •̀_•́)ง
    基于VS快速排序的单元测试
    POST GET
    Go对比其他语言新特性1(字符类型、类型转换、运算符、键盘输入、for、switch)
    四则运算问题
    软件工程第三次作业!
    Servlet
    结对编程1
    Kafka技术原理知识点总结
    KafkaStream简介
  • 原文地址:https://www.cnblogs.com/guipeng/p/6441985.html
Copyright © 2011-2022 走看看