任务描述

1. count(0) 查询 问题分析

      count() 查询,去掉不必要的 left join 查询,测试查询速度从54秒到优化后的7秒


2. 解决方案

去掉不必要的 left join 查询,测试查询速度从54秒到优化后的7秒

注意:left join 会产生重复的id数据,业务上确认一下,查询的业务是否需要查询出重复的数据


3. 优化后的sql

SELECT count(0)
FROM   RB_AmazonUploadResult temp0 WITH(nolock)
       --LEFT JOIN RB_OrderSource WITH(nolock)
       --       ON temp0.OrderSourceID = RB_OrderSource.ID
       --          AND temp0.CustomerID = RB_OrderSource.CustomerID
       --LEFT JOIN RB_Product WITH(nolock)
       --       ON RB_Product.SKU = temp0.SKU
       --          AND RB_Product.CustomerID = temp0.CustomerID
       --LEFT JOIN RB_Amazon_Product_Base pb (nolock)
       --       ON pb.CustomerID = temp0.CustomerID
       --          AND pb.OrderSourceID = temp0.OrderSourceID
       --          AND pb.OrderSourceSKU = temp0.OrderSourceSKU
       --          AND pb.IsDelete = 0
       --LEFT JOIN RB_Product_OrderSourceSKU os (nolock)
       --       ON os.CustomerID = temp0.CustomerID
       --          AND os.OrderSourceID = temp0.OrderSourceID
       --          AND os.OrderSourceSKU = temp0.OrderSourceSKU
       --LEFT JOIN RB_OrderSource ros (nolock)
       --       ON ros.CustomerID = os.CustomerID
       --          AND ros.ID = os.OrderSourceID
       --LEFT JOIN RB_AmazonUploadProduct up (nolock)
       --       ON up.CustomerID = temp0.CustomerID
       --          AND up.ProductDataID = temp0.ID
       --          AND up.OrderSourceSKU = temp0.OrderSourceSKU
       --          AND up.ProductDataID > 0
       LEFT JOIN (SELECT Min(ID) AS id
                  FROM   RB_AmazonUploadResult WITH(nolock)
                  WHERE  AddTime > '2022-02-01'
                         AND AddTime < '2022-03-29'
                         AND CustomerID = 1
                         AND LoadType < 8
                  GROUP  BY VarGuid,
                            OrderSourceSKU)tempmin
              ON tempmin.id = temp0.id
WHERE   temp0.AddTime > '2022-02-01' 
       AND ( temp0.AddTime < '2022-03-29' )
       AND ( temp0.CustomerID = 1 )
       AND ( tempmin.id IS NOT NULL )
       AND ( temp0.LoadType < 8 )

   --54秒  2060421  left join 会产生重复的id数据,业务上确认一下,查询的业务是否需要查询出重复的数据
   --7     2055940

   

附件
历史记录  
  1. 2022-04-28 17:07:57, 由 陈少军 创建。
  2. 2022-04-28 17:08:38, 由 罗友军 指派给 罗友军。
    修改了 预计剩余,旧值为 "0",新值为 "3"。
  3. 2022-04-28 17:08:47, 由 陈少军 指派给 罗友军。
    修改了 预计剩余,旧值为 "3",新值为 "2"。
    参考解决方案修改,关注 注意说明
  4. 2022-04-28 17:08:49, 由 罗友军 指派给 魏鹏军。
    修改了 指派给 ,旧值为 "luoyoujun",新值为 "weipengjun"。
    修改了 预计剩余,旧值为 "2",新值为 "3"。
  5. 2022-05-03 10:54:46, 由 罗友军 指派给 王翔宇。
    修改了 指派给,旧值为 "weipengjun",新值为 "wangxiangyu"。
  6. 2022-05-24 09:20:54, 由 罗友军 指派给 温林生。
    修改了 指派给,旧值为 "wangxiangyu",新值为 "wenlinsheng"。
  7. 2022-05-25 17:12:28, 由 温林生 完成。
    修改了 总计消耗,旧值为 "0",新值为 "7.5"。
    修改了 指派给 ,旧值为 "wenlinsheng",新值为 "chenshaojun"。
    修改了 实际完成,旧值为 "",新值为 "2022-05-25 17:06:20"。
    修改了 任务状态,旧值为 "wait",新值为 "done"。
    修改了 实际开始,旧值为 "0000-00-00 00:00:00",新值为 "2022-05-25 17:12:27"。
    修改了 预计剩余,旧值为 "3",新值为 "0"。
    修改了 由谁完成,旧值为 "",新值为 "wenlinsheng"。
    上传了附件 #26455-优化后的.Sql

    将页面查询代码进了优化,统计Count时改成了按需查询。

  8. 2022-07-16 17:09:17, 由 zhengqiao 关闭。
    修改了 任务状态,旧值为 "done",新值为 "closed"。
    修改了 指派给 ,旧值为 "chenshaojun",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "zhengqiao"。
    修改了 关闭时间,旧值为 "0000-00-00 00:00:00",新值为 "2022-07-16 17:09:17"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
所属迭代 系统管理部 - 系统服务优化
所属模块 /
相关需求 暂无
指派给 Closed 于 2022-07-16 17:09:17
任务类型 后端
任务标签 初始
开发组
任务状态 已关闭
进度 100%
优先级 P2
关键词
抄送给 刘灿 黄金龙 胡晓龙
由谁创建 陈少军 于 2022-04-28 17:07:57
由谁完成 温林生 于 2022-05-25 17:06:20
由谁取消 暂无
由谁关闭 zhengqiao 于 2022-07-16 17:09:17
关闭原因 已完成
最后编辑 zhengqiao 于 2022-07-16 17:09:17
团队 最初预计 总计消耗 预计剩余
工时信息
最初预计 0工时
总计消耗 7.5工时
预计剩余 0工时
预计开始 2022-04-28
实际开始 2022-05-25
截止日期 2022-05-05