Chinaunix首页 | 论坛 | 博客
  • 博客访问: 93793
  • 博文数量: 38
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 460
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-27 21:11
文章分类

全部博文(38)

我的朋友

分类: 信息化

2015-04-21 17:38:47

优化前语句:

 INSERT INTO ZMMCV01(MANDT, MATNR,ATINN, ATZHL, ATWRT, ATBEZ)
                SELECT A.MANDT, A.MATNR, B.ATINN, B.ATZHL, B.ATWRT, N.ATBEZ FROM MARA A
                INNER JOIN AUSP B ON A.MANDT = B.MANDT AND trim(to_char( A.CUOBF,'000000000000000000')) = B.OBJEK
                INNER JOIN CABN M ON B.MANDT = M.MANDT AND B.ATINN = M.ATINN
                INNER JOIN CABNT N ON M.MANDT = N.MANDT AND M.ATINN = N.ATINN
                INNER JOIN KLAH E ON A.MANDT = E.MANDT AND E.CLASS = A.SATNR
                INNER JOIN KSSK F ON A.MANDT = F.MANDT AND  length(f.OBJEK)>4 and
                trim(to_char(F.OBJEK,'000000000000000000')) = trim(to_char(E.CLINT,'000000000000000000')) AND B.MAFID = F.MAFID
                INNER JOIN KLAH G ON A.MANDT = G.MANDT AND F.CLINT = G.CLINT
                WHERE A.MANDT = :SY-MANDT
                AND A.LVORM <> 'X'
                AND B.ATAUT <> '8'
                AND B.MAFID = 'O'
                AND F.MAFID = 'O'
                AND N.SPRAS = '1'
                AND A.MATNR NOT IN ( SELECT DISTINCT MATNR FROM ZMMCV01 WHERE MANDT = :SY-MANDT  )
                GROUP BY A.MANDT, A.MATNR, B.ATINN, B.ATZHL, B.ATWRT, N.ATBEZ

这个语句在生产机第一次运行,1w多条数据用了6个小时跑完

优化后

INSERT INTO ZMMCV01(MANDT, MATNR,ATINN, ATZHL, ATWRT, ATBEZ)
            SELECT A.MANDT, A.MATNR, B.ATINN, B.ATZHL, B.ATWRT, N.ATBEZ
            FROM MARA A
            INNER JOIN AUSP B ON A.MANDT = B.MANDT AND B.ATAUT <> '8' AND B.MAFID = 'O'
            AND trim(to_char( A.CUOBF,'000000000000000000')) = B.OBJEK
            INNER JOIN CABN M ON B.MANDT = M.MANDT AND B.ATINN = M.ATINN
            INNER JOIN CABNT N ON M.MANDT = N.MANDT AND M.ATINN = N.ATINN AND N.SPRAS = '1'
            INNER JOIN KLAH E ON A.MANDT = E.MANDT AND E.CLASS = A.SATNR
            INNER JOIN KSSK F ON A.MANDT = F.MANDT AND length(f.OBJEK)>4 AND F.MAFID = 'O'
            and trim(to_char(F.OBJEK,'000000000000000000')) = trim(to_char(E.CLINT,'000000000000000000'))
            AND B.MAFID = F.MAFID
            INNER JOIN KLAH G ON A.MANDT = G.MANDT AND F.CLINT = G.CLINT
            WHERE A.MANDT = :SY-MANDT AND A.LVORM = ' '
            AND not exists ( SELECT MATNR FROM ZMMCV01 C where a.mandt=c.mandt and a.matnr=c.matnr)
            GROUP BY A.MANDT, A.MATNR, B.ATINN, B.ATZHL, B.ATWRT, N.ATBEZ


优化后的native sql语句重新在生产机运行,此次相同数量的数据只需11秒,结果是相当惊人的,哈哈


阅读(447) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~