SQL:时间筛选用between,提高处理速度
在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
运行时间:
更新后的写法:
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年运行的,我随便定义了一个开始日期
运行时间:
结论:时间筛选用between,速度快。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。