有两个表要模糊连接查询,为了提高速度,先将第一个表汇总后存储临时表,这样数据量从2万行变成了1千多行, 要连接的那个表#temp3只有4千行,不变
SELECT a.*
INTO #temp2
FROM ( SELECT a.子件 ,
a.品名 ,
a.到期日 ,
SUM(a.毛需求量) AS 毛需求量
FROM 订单 a
WHERE 订单状态 = '新增' 这里已经按条件筛选了
GROUP BY 子件 ,
品名 ,
a.到期日
) a
--用上面临时表为左表开始累计查询(速度很慢)
SELECT a.子件 ,
a.品名 ,
a.到期日 AS 交货日期 ,
a.毛需求量 ,
c预计入库 = ( SELECT SUM(预计入库)
FROM #temp3 b
WHERE CHARINDEX(a.子件, b.规格) > 0
AND b.交货日期 <= a.到期日
)
FROM #temp2 a
--从原表开始累计查询(速度快)
SELECT a.子件 ,
a.品名 ,
a.到期日 AS 交货日期 ,
a.毛需求量 ,
c预计入库 = ( SELECT SUM(预计入库)
FROM #temp3 b
WHERE CHARINDEX(a.子件, b.规格) > 0
AND b.交货日期 <= a.到期日
)
FROM 订单 a
WHERE a.订单状态 = '新增'
结果是下面这个用原始表有近2万行数据做为左表的只用了2表,但上面那个左表只有1千多行的却用了13秒
实在不解,特意请教,
谢谢!