Foxtable(狐表)用户栏目专家坐堂 → 为什么数据少了累计查询速度还会更慢?


  共有2150人关注过本帖平板打印复制链接

主题:为什么数据少了累计查询速度还会更慢?

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1909 积分:16987 威望:0 精华:0 注册:2014/7/29 19:09:00
为什么数据少了累计查询速度还会更慢?  发帖心情 Post By:2019/12/14 16:49:00 [只看该作者]

有两个表要模糊连接查询,为了提高速度,先将第一个表汇总后存储临时表,这样数据量从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秒
实在不解,特意请教,
谢谢!

 回到顶部