任务描述

1. 问题描述,分析

    Amazon listing管理搜索上架方式功能 

     此sql超时,17小时执行不完

    分析可知,条件查询使用了函数,in


and vtb.AddTime >='2022-06-02'                                    --优化后的
--AND DATEDIFF(day,'2022-06-02',vtb.AddTime)>=0    -- 原语句
and vtb.AddTime <='2022-06-06'                                    --优化后的
--AND DATEDIFF(day,'2022-06-06',vtb.AddTime)<=0   -- 原语句
and vtb.IsOffShelf in(0,1,2,4,5)                                      --优化后的
--and isnull(IsOffShelf,0)<>3                                         --原语句

    


2.解决方案  

   将where 条件里的 DATEDIFF函数替换,isnull(IsOffShelf,0)<>3  替换,优化后从几小时到3秒执行完成,


  and vtb.AddTime >='2022-06-02'
--AND DATEDIFF(day,'2022-06-02',vtb.AddTime)>=0  
and vtb.AddTime <='2022-06-06'
--AND DATEDIFF(day,'2022-06-06',vtb.AddTime)<=0  
and vtb.IsOffShelf in(0,1,2,4,5)
--and isnull(IsOffShelf,0)<>3  


  


  SELECT * FROM (
            SELECT
            ROW_NUMBER() OVER (ORDER BY  StopAndNullStockProduct desc, OrderSourceSKUID desc  ) AS [PageIndex] ,* 
FROM ( select vtb.ID,
             vtb.ParentID,
             vtb.IsVariation,
             vtb.IsFirstLevelProduct,
             vtb.IsSaleProduct,
             vtb.isEmergencyStock,
             vtb.ExpectedArrivalDays,
             vtb.DeliveryDay
from  [RB_Amazon_Product_Base] (nolock) vtb  
LEFT JOIN RB_StockClearDetailed scd (nolock) ON(vtb.OrderSourceSKUID=scd.ListId AND vtb.CustomerID=scd.CustomerID AND (clearType=1 OR clearType=3))
             LEFT JOIN RB_StockClearStrategy scs (nolock) ON(scd.scsID=scs.ID AND scd.CustomerID=scs.CustomerID) 
             LEFT JOIN (SELECT sum(GoodNum) AS Inventory,WareHouseID,SKU,CustomerID FROM RB_WareHouse_Product (nolock)  GROUP BY WareHouseID,SKU,CustomerID) AS tbWHN ON(vtb.WID=tbWHN.WareHouseID AND vtb.SKU=tbWHN.SKU AND vtb.CustomerID=tbWHN.CustomerID)
             LEFT JOIN RB_WareHouse w (nolock) ON w.CustomerID=vtb.CustomerID and w.ID=vtb.DefaultWarehouseID 
             LEFT JOIN RB_OrderSource o (nolock) on vtb.CustomerID=o.CustomerID and vtb.OrderSourceID = o.ID
             Left join RB_Product_Admin pa(nolock) on vtb.CustomerID=pa.CustomerID and vtb.SKU = pa.SKU
             left join RB_Product p (nolock) on p.CustomerID=vtb.CustomerID and vtb.SKU = p.SKU 
             left join RB_WareHouse wh(nolock) on wh.CustomerID=p.CustomerID and wh.ID=p.DefaultLocalWarehouse
             left join RB_WareHouse swh(nolock) on swh.CustomerID=vtb.CustomerID and swh.ID=vtb.TheWareHouseID
             left  join RB_Amazon_NotToFbaReason ntf (nolock) on vtb.CustomerID=ntf.CustomerID and vtb.NotToFbaReasonId=ntf.ID 
WHERE  vtb.CustomerID=1 AND vtb.IsDelete=0 
and vtb.AddTime >='2022-06-02'
--AND DATEDIFF(day,'2022-06-02',vtb.AddTime)>=0  
and vtb.AddTime <='2022-06-06'
--AND DATEDIFF(day,'2022-06-06',vtb.AddTime)<=0  
and vtb.IsOffShelf in(0,1,2,4,5)
--and isnull(IsOffShelf,0)<>3  
and vtb.OrderSourceSKUID>0  
    and  vtb.OnShelfMode in (SELECT CONVERT(INT, item) FROM Charsplitforin(9, ','))  
  ) AS TempTable 
) AS  PagerTable WHERE PagerTable.[PageIndex] BETWEEN 1 AND 20  

--PARAMS:@CustomerID = 1 ,@UserID = 7172 ,@InputTimeB = 2022-06-02 ,@InputTimeE = 2022-06-06 ,@Count1 =  ,@Count2 =  ,@OnShelfMode = 9 ,

--MESSAGE:执行超时已过期。完成操作之前已超时或服务器未响应。 

select top 1 * from [RB_Amazon_Product_Base] nolock


3.原sql

SQL:   

            SELECT * FROM (

            SELECT

            ROW_NUMBER() OVER (ORDER BY  StopAndNullStockProduct desc, OrderSourceSKUID desc  ) AS [PageIndex] ,* FROM ( select vtb.ID,

             vtb.ParentID,

             vtb.IsVariation,

             pa.RecommendValue,

             vtb.IsFirstLevelProduct,

             vtb.IsSaleProduct,

             vtb.isEmergencyStock,

             vtb.ExpectedArrivalDays,

             vtb.DeliveryDay,

             Isnull(BuyBoxNum1, 0)                           BuyBoxNum1,

             Isnull(BuyBoxNum2, 0)                           BuyBoxNum2,

             Isnull(AllBuyBoxNum1, 0)                        AllBuyBoxNum1,

             Isnull(BuyBoxNum3, 0)                           BuyBoxNum3,

             Isnull(AllBuyBoxNum2, 0)                        AllBuyBoxNum2,

             Isnull(AllBuyBoxNum3, 0)                        AllBuyBoxNum3,

             Isnull(OrdinaryBuyBoxNum1, 0)                   OrdinaryBuyBoxNum1,

             Isnull(OrdinaryAllBuyBoxNum1, 0)                OrdinaryAllBuyBoxNum1,

             Isnull(OrdinaryBuyBoxNum2, 0)                   OrdinaryBuyBoxNum2,

             Isnull(OrdinaryAllBuyBoxNum2, 0)                OrdinaryAllBuyBoxNum2,

             Isnull(OrdinaryBuyBoxNum3, 0)                   OrdinaryBuyBoxNum3,

             Isnull(OrdinaryAllBuyBoxNum3, 0)                OrdinaryAllBuyBoxNum3,

             AUID,

             vtb.ImageUrl,

             vtb.ClientSKU,

             vtb.ProductName,

             vtb.ProductNameCN,

             PID,

             vtb.SalePrice,

             vtb.LastBuyPrice,

             vtb.LastSupplierPrice,

             vtb.GrossWeight,

             vtb.PackWeight,

             vtb.IsGroup,

             vtb.ProductProperty,

             o.OrderSourceCountry,

             o.OrderSourceName,

             cgzNum,

             ystzNum,

             ProductNum,

             ReadyLibraryNum,

             todaysaleNum,

             zsaleNum,

             qsaleNum,

             sqsaleNum,

             WeekSaleNum,

             TwoWeekSaleNum,

             vtb.APIID,

             DevIDSellerId,

             Cycle,

             vtb.SafetyDays,

             WPID,

             LastUPdateTime,

             vtb.AddCycle,

             vtb.HaulageTime,

             vtb.EstimatedSaleNum,

             vtb.BuyTime,

             IsBuyBox,

             RobBuyBox,

             Kl,

             vtb.AvgDailySales,

             ToBuyBoxProduct,

             IsTiming,

             vtb.WID,

             vtb.CustomerID,

             vtb.BasePrice,

             vtb.OrderSourceID,

             vtb.UpdateTime,

             vtb.FNSKU,

             vtb.LockNum,

             IsFBA,

             vtb.OrderSourceSKU,

             vtb.WareHouseName,

             ASINorItemID,

             SellerType,

             vtb.SKU,

             vtb.BusinessTeam,

             vtb.BusinessTeamName,

             vtb.OrderSourceSKUID,

             KykcNum,

             CnKyNum,

             CnWPID,

             vtb.WareHouseType,

             msaleNum,

             lastmsaleNum,

             zhanyong,

             vtb.IsActive,

             vtb.AddTime,

             daysNum,

             BuyBoxUpdateTime,

             SyncLastUpdateTime,

             isBeiKu,

             LastUpTiming,

             LastDownTiming,

             rankNum,

             rankZTNum,

             rankQTNum,

             rankSQNum,

             rankClassName,

             bhnum,

             IsOffShelf,

             ListingPrice,

             ListingSoldNum,

             StopProduct,

             StopAndNullStockProduct,

             BusinessAdminID,

             BusinessUserName,

             vtb.Currency,

             ExchangeRMB,

             FBASeller_Num,

             ThreeMonthSaleNum,

             RobBuyBoxType,

             Attention,

             Isnull(LowestPriceBuyBoxNum1, 0)                LowestPriceBuyBoxNum1,

             Isnull(LowestPriceAllBuyBoxNum1, 0)             LowestPriceAllBuyBoxNum1,

             Isnull(LowestPriceBuyBoxNum2, 0)                LowestPriceBuyBoxNum2,

             Isnull(LowestPriceAllBuyBoxNum2, 0)             LowestPriceAllBuyBoxNum2,

             Isnull(LowestPriceBuyBoxNum3, 0)                LowestPriceBuyBoxNum3,

             Isnull(LowestPriceAllBuyBoxNum3, 0)             LowestPriceAllBuyBoxNum3,

             ProductVitalityType,

             ProductNewType,

             UnsalableDayNum,

             AmazonShelvesNum,

             EbayShelvesNum,

             SMTShelvesNum,

             WishShelvesNum,

             OtherShelvesNum,

             TotalShelvesNum,

             vtb.FirstLegShippingType,

             IsRemind,

             (SELECT TOP 1 ID FROM   RB_Listing_Sync_GoodNum sync (nolock) WHERE  sync.IsActive = 1 AND sync.ListingType = 2 AND sync.ListingID = vtb.OrderSourceSKUID AND sync.CustomerID = vtb.CustomerID)   IsSet,

             Isnull(vtb.BrandType, 0)                        BrandType,

             Isnull(scd.ID, 0)                               AS IsClear,

             scs.Name,

             scd.WarehouseNum,

             ( WarehouseNum - Inventory )                    AS ClearInventory,

             vtb.IsAmazonListingReview,

             vtb.ReviewStar,

             vtb.ReviewNum,

             vtb.ReviewUnReadNum,

             vtb.LastReviewCollectionTime,

             vtb.LastSynReviewTime,

             vtb.BadReviewNum,

             vtb.ThreeDayReviewNum,

             vtb.SevenDayDayReviewNum,

             vtb.IsAmazonKeywordRank,

             vtb.FBA_Reserved_CustomerOrders,

             vtb.FBA_Reserved_Transfers,

             vtb.FBA_Reserved_Processing,

             YesterdaySessions,

             BeforeYesterdaySessions,

             HeretoforeSessions,

             Isnull(YesterdayUnitSessionPercentage, 0)       AS YesterdayUnitSessionPercentage,

             Isnull(BeforeYesterdayUnitSessionPercentage, 0) AS BeforeYesterdayUnitSessionPercentage,

             Isnull(HeretoforeUnitSessionPercentage, 0)      AS HeretoforeUnitSessionPercentage,

             vtb.TaxPoint,

             vtb.TaxRate,

             Isnull(vtb.IsFBABarCode, 0)                     IsFBABarCode,

             Isnull(vtb.IsRecommendOcean, 0)                 IsRecommendOcean,

             Isnull(w.WareHouseName, '')                     AS DefaultWareHouseName,

             Isnull(vtb.YesterdaySpend, 0)                   YesterdaySpend,

             Isnull(vtb.TotalSpend, 0)                       TotalSpend,

             Isnull(vtb.YesterdayAvgCPC, 0)                  YesterdayAvgCPC,

             Isnull(vtb.TotalAvgCPC, 0)                      TotalAvgCPC,

             Isnull(vtb.YesterdayClicks, 0)                  YesterdayClicks,

             Isnull(vtb.TotalClicks, 0)                      TotalClicks,

             Isnull(vtb.YesterdayImpressions, 0)             YesterdayImpressions,

             Isnull(vtb.TotalImpressions, 0)                 TotalImpressions,

             Isnull(vtb.IsEFN, 0)                            AS IsEFN,

             vtb.EFNCountry,

             Isnull(vtb.IsCheckDeclarationCode, 0)           IsCheckDeclarationCode,

             Isnull(vtb.IsCheckTransport, 0)                 IsCheckTransport,

             Isnull(vtb.IsSalesRank, 0)                      IsSalesRank,

             p.ProdutcArrivalDate,

             vtb.HolidaysID,

             wh.WareHouseName                                AS DefaultLocalWarehouse,

             swh.WareHouseName                               SupplierWareHouseName,

             vtb.AddAdminName,

             vtb.IsSetNoSupplyReason,

             vtb.IsEmergencyStockReminder,

             vtb.TranslateStatus,

             p.MinSaleNum,

             p.WithBattery,

             pa.IsAmazonSale,

             pa.NoSalePlatform,

             vtb.TemplateID,

             vtb.LableColor,

             vtb.LableName,

              p.PictureSource,

              pa.ImageTime,

             vtb.ProfitMargin,

             vtb.PublishTime,

             vtb.MonthAvgProfits,

             vtb.PlanID,

             vtb.PlanDetailId,

             vtb.PlanName,

             vtb.IsAgainPublish,

             vtb.IsAutoAdjustPrice,

             vtb.IsAutoLowerShelf,

             vtb.IsAutoPromotion,

             OnShelfMode,

             vtb.OrderSourceSkuOrderTime,

             vtb.AsinOrderTime,

             p.IsIntelligentStocking,

             ntf.Reason,

             vtb.WaitToFbaType ,             

             vtb.SevenDaySales,

             vtb.SevenDayAcos,

             vtb.DefaultWarehouseID,

             vtb.RecommendedOrderQuantity,

             vtb.DiscountStartTime,

             vtb.DiscountEndTime,

             vtb.DiscountSalesPrice,

             p.ImageUrl  as  ProductImageUrl,

             p.ProductName as ProductTitle,

             vtb.IsAdvertising,

             vtb.UnsellableQuatity,

             pa.NoSaleCountry,

             vtb.IsNARF,

             vtb.MaximumShipmentQuantity,

             vtb.RecommendFinalNum,

             vtb.MonitorStockFinalNum,

             vtb.IsJoinSmall,

             vtb.RecommendJoinSmall,

             vtb.NoJoinSmallReason   from  [RB_Amazon_Product_Base] (nolock) vtb  LEFT JOIN RB_StockClearDetailed scd (nolock) ON(vtb.OrderSourceSKUID=scd.ListId AND vtb.CustomerID=scd.CustomerID AND (clearType=1 OR clearType=3))

                         LEFT JOIN RB_StockClearStrategy scs (nolock) ON(scd.scsID=scs.ID AND scd.CustomerID=scs.CustomerID) 

                         LEFT JOIN (SELECT sum(GoodNum) AS Inventory,WareHouseID,SKU,CustomerID FROM RB_WareHouse_Product (nolock)  GROUP BY WareHouseID,SKU,CustomerID) AS tbWHN ON(vtb.WID=tbWHN.WareHouseID AND vtb.SKU=tbWHN.SKU AND vtb.CustomerID=tbWHN.CustomerID)

                        LEFT JOIN RB_WareHouse w (nolock) ON w.CustomerID=vtb.CustomerID and w.ID=vtb.DefaultWarehouseID 

                        LEFT JOIN RB_OrderSource o (nolock) on vtb.CustomerID=o.CustomerID and vtb.OrderSourceID = o.ID

                        Left join RB_Product_Admin pa(nolock) on vtb.CustomerID=pa.CustomerID and vtb.SKU = pa.SKU

                        left join RB_Product p (nolock) on p.CustomerID=vtb.CustomerID and vtb.SKU = p.SKU 

                        left join RB_WareHouse wh(nolock) on wh.CustomerID=p.CustomerID and wh.ID=p.DefaultLocalWarehouse

                        left join RB_WareHouse swh(nolock) on swh.CustomerID=vtb.CustomerID and swh.ID=vtb.TheWareHouseID

                        left  join RB_Amazon_NotToFbaReason ntf (nolock) on vtb.CustomerID=ntf.CustomerID and vtb.NotToFbaReasonId=ntf.ID WHERE  vtb.CustomerID=@CustomerID AND vtb.IsDelete=0  AND DATEDIFF(day,@InputTimeB,vtb.AddTime)>=0  AND DATEDIFF(day,@InputTimeE,vtb.AddTime)<=0  and isnull(IsOffShelf,0)<>3  and vtb.OrderSourceSKUID>0 And vtb.OnShelfMode in (SELECT CONVERT(INT, item) FROM Charsplitforin(@OnShelfMode, ','))  ) AS TempTable ) AS  PagerTable WHERE PagerTable.[PageIndex] BETWEEN 1 AND 20  option(maxdop 8)

PARAMS:@CustomerID = 1 ,@UserID = 7172 ,@InputTimeB = 2022-06-02 ,@InputTimeE = 2022-06-06 ,@Count1 =  ,@Count2 =  ,@OnShelfMode = 9 ,

MESSAGE:执行超时已过期。完成操作之前已超时或服务器未响应。 

历史记录  
  1. 2022-06-08 11:26:57, 由 陈少军 创建。
  2. 2022-06-08 11:29:04, 由 陈少军 指派给 魏鹏军。
    修改了 预计剩余,旧值为 "0",新值为 "2"。
    参考解决方案优化
  3. 2022-06-08 12:02:09, 由 陈少军 指派给 王翔宇。
    修改了 指派给,旧值为 "weipengjun",新值为 "wangxiangyu"。
  4. 2022-06-14 15:34:30, 由 王翔宇 指派给 冯名明。
    修改了 指派给 ,旧值为 "wangxiangyu",新值为 "fengmingming"。
    修改了 预计剩余,旧值为 "2",新值为 "4"。
  5. 2022-06-20 15:03:09, 由 冯名明 完成。
    修改了 总计消耗,旧值为 "0",新值为 "4"。
    修改了 指派给 ,旧值为 "fengmingming",新值为 "liletong"。
    修改了 实际完成,旧值为 "",新值为 "2022-06-20 14:55:02"。
    修改了 任务状态,旧值为 "wait",新值为 "done"。
    修改了 实际开始,旧值为 "0000-00-00 00:00:00",新值为 "2022-06-20 15:03:09"。
    修改了 预计剩余,旧值为 "4",新值为 "0"。
    修改了 由谁完成,旧值为 "",新值为 "fengmingming"。

    1.查询所有listing数据,排除草稿状态的数据,使用优化后的脚本:and vtb.IsOffShelf in(0,1,2,4,5) --优化后的


    2.根据listing状态查询数据


    3.根据时间查询数据


  6. 2022-07-16 17:09:18, 由 zhengqiao 关闭。
    修改了 任务状态,旧值为 "done",新值为 "closed"。
    修改了 指派给 ,旧值为 "liletong",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "zhengqiao"。
    修改了 关闭时间,旧值为 "0000-00-00 00:00:00",新值为 "2022-07-16 17:09:18"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
所属迭代 系统管理部 - 系统服务优化
所属模块 /
相关需求 暂无
指派给 Closed 于 2022-07-16 17:09:18
任务类型 后端
任务标签 初始
开发组
任务状态 已关闭
进度 100%
优先级 P2
关键词
抄送给
由谁创建 陈少军 于 2022-06-08 11:26:57
由谁完成 冯名明 于 2022-06-20 14:55:02
由谁取消 暂无
由谁关闭 zhengqiao 于 2022-07-16 17:09:18
关闭原因 已完成
最后编辑 zhengqiao 于 2022-07-16 17:09:18
团队 最初预计 总计消耗 预计剩余
工时信息
最初预计 0工时
总计消耗 4工时
预计剩余 0工时
预计开始 2022-06-08
实际开始 2022-06-20
截止日期 2022-06-15