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 国际许可协议 进行许可。