在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,速度快。