在MetaBase做了一个抓取流程单异常的报表,数据源是SQL SERVER。原来用16秒大家还能接受,今天徒弟和我说要两分多钟了,遂看了下,在SQL Server上运行也是慢,排除MetaBase的问题。下面是原来的写法:

 SELECT /*b.acttrqty,
        g.sumtxqty,
        */ V_MO_FNAME_FROMKDFNAME 生产车间,
        cpart 物料代码,
        cpartdesc 物料名称,
        cpartspec 规格型号,
        cpartcolor 颜色,
        Adocno 生产订单号,
        Adocseq 生产订单行号,
        Amono 流程单号,
        /*A.moseq 流程单行号,
        */dacttrqty 初始点收数,
         gsumtxqty 累计不良数,
        Bnextprseq 最近汇报工序,
        btrqty 最近汇报数,
        WCLS 未处理数,
         BREFNO 最近汇报单号,
        bdocdate 最近汇报时间,
        CSSH '超时数H' ,DATEDIFF(HOUR,bdocdate,getdate()) '超时数H'
FROM V_LCDZXYC
WHERE CSSH>=12

运行时间:1分56秒.jpg

更新后的写法:

SELECT /*b.acttrqty,
         g.sumtxqty,
         */ V_MO_FNAME_FROMKDFNAME 生产车间,
         cpart 物料代码,
         cpartdesc 物料名称,
         cpartspec 规格型号,
         cpartcolor 颜色,
         Adocno 生产订单号,
         Adocseq 生产订单行号,
         Amono 流程单号,
         /*A.moseq 流程单行号,
         */dacttrqty 初始点收数,
         gsumtxqty 累计不良数,
         Bnextprseq 最近汇报工序,
         btrqty 最近汇报数,
         WCLS 未处理数,
         BREFNO 最近汇报单号,
         bdocdate 最近汇报时间,
         CSSH '超时数H' FROM V_LCDZXYC WHERE 1=1
        AND bdocdate
    BETWEEN '2010-07-22 22:18:13.757'
        AND dateadd(hh,-12,getdate()) --系统是2019年运行的,我随便定义了一个开始日期

运行时间:7秒.jpg

结论:时间筛选用between,速度快。