任务描述

1.问题描述

   

Selec count(1) RB_Product 超时,每天39次/天

http://158-2.zhcxkj.com/Log/DBError_2022-04-20.txt



2.问题分析

select count(1)查询里有多余的查询字段和left join连接


3.解决方案



去掉:查询里有多余的查询字段和left join连接,查询很快,

优化后的SQL:


SELECT Count(1)
FROM   (SELECT p.ID
        FROM   dbo.RB_Product (NOLOCK) p
               LEFT JOIN RB_Product_Admin pa WITH ( NOLOCK )
                      ON pa.SKU = p.SKU
                         AND pa.CustomerID = p.CustomerID
        WHERE  p.CustomerID = 1
               AND p.DeleteStatus = 0
               AND p.ProductState IN ( 0, 1, 3, 4, 5 )
               AND pa.DevelopStatus = 3
               AND pa.EditStatus = 3
               AND pa.ImageStatus = 3
               AND pa.CheckStatus = 0
               AND p.ProductProperty = 1
               AND Isnull(p.BrandID, 0) = 0) AS TempCount; 



4.超时sql


SELECT Count(1)
FROM   (SELECT p.ID,
               p.CustomerID,
               p.ClientSKU,
               p.SKU,
               p.ProductState,
               p.MinSaleNum,
               p.ImageUrl,
               p.ProductProperty,
               p.WithBattery,
               p.PlugRelate,
               p.PlugRelateType,
               p.ProductGroupSKU,
               p.ProductName,
               p.ProductNameCN,
               p.LastSupplierPrice,
               p.GrossWeight,
               p.UnitShipFee,
               p.LastBuyShipFee,
               p.SalePrice,
               p.PackWeight,
               p.IsGroup,
               p.OnlineStatus,
               p.ComeSource                       AS ComeSource,
               Isnull(whp.GoodNum, 0)             GoodNum,
               Isnull(whp.AvgDailySales, 0)       AvgDailySales,
               Isnull(wh.WareHouseName, '')       DefaultLocalWarehouseName,
               pa.RecommendValue,
               pa.AddAdminID,
               pa.AddAdminName,
               pa.AddTime,
               pa.DevelopmentAuditOperatorName,
               pa.ProductDevelopmentAuditTime,
               pa.EditAuditOperatorName,
               pa.ProductEditAuditTime,
               pa.PictureAuditOperatorName,
               pa.ProductPictureAuditTime,
               pa.IsAmazonSale,
               pa.NoSalePlatform,
               pa.NoSaleCountry,
               pa.DevelopStatus,
               pa.DevelopAdminID,
               pa.DevelopAdminName,
               pa.DevelopTime,
               pa.DevelopRefuseReason,
               pa.DevelopRefuseTime,
               pa.AssignDevelopAdminID,
               pa.AssignDevelopAdminName,
               pa.AssignDevelopTime,
               pa.EditStatus,
               pa.EditAdminID,
               pa.EditAdminName,
               pa.EditTime,
               pa.EditRefuseTime,
               pa.ToImageMemo,
               pa.ImageStatus,
               pa.ImageAdminID,
               pa.ImageAdminName,
               pa.ImageTime,
               pa.ImageRefuseTime,
               pa.BuyerID,
               pa.BuyerName,
               pa.BuyerSetTime,
               pa.CheckStatus,
               pa.CheckReason,
               pa.CheckAdminID,
               pa.CheckAdminName,
               pa.CheckTime,
               pa.OnlineTime,
               pa.OfflineTime,
               pa.OfflineAdminID,
               pa.OfflineAdminName,
               p.TaxPoint,
               p.TaxRate,
               p.IsRawMaterial,
               Isnull(ProductBadNum, 0)           ProductBadNum,
               Isnull(NumError, 0)                NumError,
               p.ProductType,
               Isnull(p.IsFBABarCode, 0)          IsFBABarCode,
               Isnull(p.IsRecommendOcean, 0)      AS IsRecommendOcean,
               pd.DeclarationPriceRate,
               p.IsCheckDeclarationCode,
               p.IsCheckTransport,
               p.LastBuyPrice,
               pa.PriceSpecialistOperatTime,
               Isnull(p.DefaultLocalWarehouse, 0) AS DefaultLocalWareHouse,
               p.DevelopType,
               p.AppointDevelopType,
               p.PictureSource,
               p.PreclassStatus,
               p.PreclassGoodsCode,
               p.ImitatingBrandRemark,
               p.ProductStateRemarks,
               p.ClassID1,
               p.ClassID2,
               p.ClassID,
               p.BeginTime,
               p.EndTime,
               p.ProdutcArrivalDate,
               Isnull(pa.PhotographerId, 0)       PhotographerId,
               Isnull(pa.PhotographerName, '')    PhotographerName,
               pa.PhotographerTime,
               pa.WrapDesignerId,
               pa.WrapDesignerName,
               pa.WrapDesignerTime,
               pa.ImageDesignerId,
               pa.ImageDesignerName,
               pa.ImageDesignerTime,
               pa.IntellectualPropertyRightsAdminID,
               pa.IntellectualPropertyRightsAdminName,
               pa.IntellectualPropertyRightsTime,
               Isnull(p.EditNum, 0)               EditNum,
               p.IsNeedCeCertification
        FROM   dbo.RB_Product (NOLOCK) p
               LEFT JOIN RB_Product_Admin pa WITH ( NOLOCK )
                      ON pa.SKU = p.SKU
                         AND pa.CustomerID = p.CustomerID
               LEFT JOIN RB_WareHouse_Product whp WITH ( NOLOCK )
                      ON whp.SKU = p.SKU
                         AND whp.CustomerID = p.CustomerID
                         AND whp.WareHouseID = ( CASE p.DefaultLocalWarehouse
                                                   WHEN 0 THEN 5312
                                                   WHEN NULL THEN 5312
                                                   ELSE p.DefaultLocalWarehouse
                                                 END )
                         AND EXISTS (SELECT 1
                                     FROM   RB_WareHouse
                                     WHERE  whp.WareHouseID = RB_WareHouse.ID
                                            AND whp.CustomerID = RB_WareHouse.CustomerID
                                            AND RB_WareHouse.WareHouseType = 1)
               LEFT JOIN RB_WareHouse wh (NOLOCK)
                      ON p.CustomerID = wh.CustomerID
                         AND p.DefaultLocalWarehouse = wh.ID
                         AND wh.IsActive = 1
               LEFT JOIN (SELECT CustomerID,
                                 SKU,
                                 Sum(BadNum) AS ProductBadNum
                          FROM   RB_Procurement_Detail_BadList WITH ( NOLOCK )
                          WHERE  BadNum > 0
                                 AND DType = 1
                          GROUP  BY CustomerID,
                                    SKU) AS RB_Procurement_Detail_BadList
                      ON p.SKU = RB_Procurement_Detail_BadList.SKU
                         AND p.CustomerID = RB_Procurement_Detail_BadList.CustomerID
               LEFT JOIN (SELECT CustomerID,
                                 SKU,
                                 Sum(NumError) AS NumError
                          FROM   RB_ProductManageLog WITH ( NOLOCK )
                          WHERE  NumError > 0
                          GROUP  BY CustomerID,
                                    SKU) AS RB_ProductManageLog
                      ON p.SKU = RB_ProductManageLog.SKU
                         AND p.CustomerID = RB_ProductManageLog.CustomerID
               LEFT JOIN RB_Product_Declaration pd ( NOLOCK )
                      ON p.CustomerID = pd.CustomerID
                         AND p.SKU = pd.SKU
        WHERE  p.CustomerID = 1
               AND p.DeleteStatus = 0
               AND p.ProductState IN ( 0, 1, 3, 4, 5 )
               AND pa.DevelopStatus = 3
               AND pa.EditStatus = 3
               AND pa.ImageStatus = 3
               AND pa.CheckStatus = 0
               AND p.ProductProperty = 1
               AND Isnull(p.BrandID, 0) = 0) AS TempCount; 


历史记录  
  1. 2022-04-26 17:52:54, 由 陈少军 创建。
  2. 2022-04-26 17:53:32, 由 陈少军 指派给 何建宝。
    修改了 预计剩余,旧值为 "0",新值为 "2"。

    3.解决方案


    去掉:查询里有多余的查询字段和left join连接,查询很快,

  3. 2022-05-25 16:57:52, 由 何建宝 完成。
    修改了 总计消耗,旧值为 "0",新值为 "2"。
    修改了 指派给 ,旧值为 "hejianbao",新值为 "chenshaojun"。
    修改了 实际完成,旧值为 "",新值为 "2022-05-25 16:56:47"。
    修改了 任务状态,旧值为 "wait",新值为 "done"。
    修改了 实际开始,旧值为 "0000-00-00 00:00:00",新值为 "2022-05-25 16:57:51"。
    修改了 预计剩余,旧值为 "2",新值为 "0"。
    修改了 由谁完成,旧值为 "",新值为 "hejianbao"。

    已经根据要求进行调整,可以跟进下处理结果

  4. 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-26 17:52:54
由谁完成 何建宝 于 2022-05-25 16:56:47
由谁取消 暂无
由谁关闭 zhengqiao 于 2022-07-16 17:09:17
关闭原因 已完成
最后编辑 zhengqiao 于 2022-07-16 17:09:17
团队 最初预计 总计消耗 预计剩余
工时信息
最初预计 0工时
总计消耗 2工时
预计剩余 0工时
预计开始 2022-04-26
实际开始 2022-05-25
截止日期 2022-05-07