重现步骤
declare @CustomerID int= 1 ,@CurrentAdminID int= 8728 ,@IsPay int= 1 ,@StartTime datetime= '2024/4/5 0:00:00' ,@EndTime datetime= '2024/6/5 23:59:59' ,@Codes varchar(50)= '15457924' ,@OrderListStartTime datetime= '2024/4/4 0:00:00' ,@OrderListEndTime datetime= '2024/6/20 23:59:59' ,@OrderProfitEnd money= -0.01 ,@SaleAdminID int= 8728 ;
SELECT * FROM (
                    SELECT ROW_NUMBER() OVER (ORDER BY AddTime DESC) AS [PageIndex] ,* FROM (SELECT oi.ID,oi.AliExpressTrusteeType,oi.AmazonShipmentId,
                oi.OrderCode,
                oi.ClientOrderCode,
                oi.MainOrderCode,
                oi.MergeOrderCode,
                oi.SalesRecordNumber,
                oi.OrderSourceID,
                oi.ClientUserAccount,
                oi.OrderStatus,
                oi.OrderState,
                oi.IsFirstDeliver,
                ( CASE
                    WHEN oi.IsPriority > 0 THEN oi.IsPriority
                    ELSE Isnull(os.PriorityNum, 0)
                END )                    AS IsPriority,
                oi.PackagedIDs,
                oi.IsASingleInTheEnd,
                oi.PayerId,
                oi.Email,
                oi.SellerOrderId,
                oi.IsPay,
                oi.CommentType,
                oi.TransactionId,
                oi.PaymentType,
                isnull(oi.RefundPrice,0) as RefundPrice,
                isnull(oi.ThrowingRate,0) as ThrowingRate,
                oi.TotalPrice,
                oi.ExchangeRMB,
                oi.ExchangeUSD,
                oi.TransportPay,
                oi.OtherPayPrice,
                oi.ProductTotalPrice,
                oi.PromotionDiscountAmount,
                oi.CouponCode,
                oi.CouponMinusPrice,
                oi.DiscountMinusPrice,
                oi.AddPayPrice,
                oi.AddOrderReasonType,
                oi.ShareType,
                oi.ShareCustomerID,
                oi.IsAccount,
                oi.AccountTime,
                oi.ShareTotalPrice,
                oi.SynchronousTime,
                oi.IsSynchronous,
                oi.IsTogeInvoice,
                ISNULL(oi.Encrypted,0) as Encrypted,
                oi.FirstName,
                oi.LastName,
                oi.Address,
                oi.District,
                oi.CabinetNO,
                oi.City,
                oi.Province,
                oi.Country,
                oi.PostCode,
                oi.Telephone,
                oi.ShippingService,
                oi.DownLoadUpdateTime,
                oi.PromotionType,
                oi.TrackNumberTemp,
                oi.TrackNumbers,
                oi.UpdatePlatformTime,
                oi.MarkDeliveryState,
                oi.EMPSDeliveryState,
                oi.LogisticsOrderNo,
                oi.LogisticsOrderNo1,
                oi.ShipTime,
                oi.OrderDescription,
                oi.ISsynchOverseas,
                oi.ProductNumber,
                oi.ProductVolume,
                oi.ProductWeight,
                oi.PayTime,
                oi.AddTime,
                oi.UpdateTime,
                oi.LatestShipDate,
                oi.ServiceAdminName,
                oi.SKUNumber,
                oi.ReturnStatus,
                oi.LatestDeliveryDate,
                oi.VipDiscount,
                Isnull(oi.IsTaxFree, 0) IsTaxFree,
                oi.Currency,
                os.ServiceAdminName        AS ServiceOSAdminName,
                Isnull(oi.IsFBATransit, 0) IsFBATransit,
                oi.WareHouseID,
                wh.WareHouseName,
                os.OrderSourceName,
                os.OrderSourceType,
                os.OrderSourceCountry,
                os.AddTime AS OrderSourceAddTime,
                CASE
                    WHEN os.AddTime >= DATEADD(MONTH,-3,GETDATE()) THEN '新'
                    ELSE '旧'
                END NewOldSign,
                e.Country_cn,
                t.TransportName,
                t.PMSTransport,
                tapi.Transport_API_Class,
                wh.WareHouseType,
                oi.Token,
                os.SaleAdminName,
                os.VATNumber,
                os.VATRate,
                oi.SaveTrackNumbersTime,
                t.TrackingNumberValidDays,
                ISNULL(t.TrackNumbersIsNaturalDay,1) AS TrackNumbersIsNaturalDay,
                datediff(day,getdate(),(dateadd(day,TrackingNumberValidDays,SaveTrackNumbersTime))) as TrackNumbersDiffDay,
                bt.BusinessTeamName,
                fbt.BusinessTeamName AS FBABusinessTeamName,
                frba.UserName AS FBASaleAdminName,
                mbt.BusinessTeamName AS FBMBusinessTeamName,
                mrba.UserName AS FBMSaleAdminName,
                t.ID AS TransportID,
                e.ID AS CountryID,
                oi.Oaid,
                0 AS DeliveryStatus,
                api.CertIDAccessKeyId,
                ISNULL(cexpand.BillPdfUrl, '') BillPdfUrl,orderFin.PaymentStatus,orderFin.FundTransferStatus,profits.Profits,profits.ProfitRate,profits.OtherProfitRate, profits.OtherProfitRateTax,profits.OtherOrderFee,att1.IsAttachMail AS IsAttachMail   FROM RB_OrderInfo oi WITH(nolock) LEFT JOIN  RB_OrderSource os WITH(nolock)
                ON oi.CustomerID = os.CustomerID AND oi.OrderSourceID = os.ID
            LEFT JOIN E_Country e WITH(nolock)
                ON oi.Country = e.Shorthand
            LEFT JOIN RB_Transport t WITH(nolock)
                ON oi.CustomerID = t.CustomerID AND oi.TransportID = t.ID
            LEFT JOIN RB_Transport_API tapi WITH(nolock)       
                ON t.Transport_API_ID = tapi.ID AND t.CustomerID = tapi.CustomerID
            LEFT JOIN RB_WareHouse wh WITH(nolock)
                ON oi.CustomerID = wh.CustomerID AND oi.WareHouseID = wh.ID
            LEFT JOIN RB_Admin rba WITH(nolock)
                ON rba.CustomerID = os.CustomerID AND rba.ID = os.SaleAdminID
            LEFT JOIN RB_BusinessTeam bt WITH(nolock)
                ON bt.CustomerID = os.CustomerID AND bt.ID = rba.BusinessTeamID
            LEFT JOIN RB_Admin frba WITH(nolock)
                ON frba.CustomerID = os.CustomerID AND frba.ID = os.FBASaleAdminID
            LEFT JOIN RB_BusinessTeam fbt WITH(nolock)
                ON fbt.CustomerID = frba.CustomerID AND fbt.ID = frba.BusinessTeamID
            LEFT JOIN RB_Admin mrba WITH(nolock)
                ON mrba.CustomerID = os.CustomerID AND mrba.ID = os.FBMSaleAdminID
            LEFT JOIN RB_BusinessTeam mbt WITH(nolock)
                ON mbt.CustomerID = mrba.CustomerID AND mbt.ID = mrba.BusinessTeamID
            LEFT JOIN RB_OrderSource_EbayAmazonAPI api WITH(nolock)
                ON os.CustomerID = api.CustomerID AND os.ID = api.OrderSourceID
            LEFT JOIN RB_OrderInfo_ClientExpand (NOLOCK) cexpand
                                        ON oi.CustomerID = cexpand.CustomerID
                                           AND oi.OrderCode = cexpand.OrderCode
            LEFT JOIN RB_OrderInfo_FinancialExt (NOLOCK) orderFin
                                        ON oi.CustomerID = orderFin.CustomerID
                                           AND oi.OrderCode = orderFin.OrderCode LEFT JOIN RB_Order_Profits profits WITH(nolock)
                                                    ON oi.CustomerID = profits.CustomerID AND oi.OrderCode = profits.OrderCode  INNER JOIN (SELECT distinct CustomerID,OrderSourceID from RB_OrderSource_SaleAdmin WITH(nolock) where Adminid = @CurrentAdminID and CustomerID = @CustomerID)   ossa   ON ossa.OrderSourceID=oi.OrderSourceID and ossa.CustomerID=oi.CustomerID outer apply (SELECT Count(1) IsAttachMail
                        FROM   RB_OrderInfo_Attach att(nolock)
                        WHERE  att.CustomerID = oi.CustomerID
                               AND att.OrderCode = oi.OrderCode) att1   WHERE  oi.CustomerID = @CustomerID
                                        AND oi.IsStockOrder = 0 AND oi.OrderStatus IN ( 3 ) AND oi.IsPay = @IsPay AND oi.AddTime >= @StartTime AND oi.AddTime <= @EndTime  AND Exists (  SELECT 1 FROM RB_OrderList ol WITH(nolock) WHERE ol.CustomerID = @CustomerID  AND ol.AddTime >= @OrderListStartTime AND ol.AddTime <= @OrderListEndTime AND ol.SKU IN ( SELECT item FROM CharSplitForIn(@Codes,',') ) AND ol.CustomerID = oi.CustomerID AND ol.OrderCode = oi.OrderCode) AND (CONVERT(nvarchar(255),oi.OrderDescription) = '') AND (profits.Profits -ABS(profits.OtherOrderFee)) <= @OrderProfitEnd AND ((os.SaleAdminID = @SaleAdminID AND ISNULL(os.FBASaleAdminID,0) = 0 AND ISNULL(os.FBMSaleAdminID,0) = 0 ) OR (os.FBASaleAdminID = @SaleAdminID AND wh.WareHouseType = 3 ) OR (os.FBMSaleAdminID = @SaleAdminID AND wh.WareHouseType <> 3 ) AND os.OrderSourceType = 1 ) OR (os.SaleAdminID = @SaleAdminID AND os.OrderSourceType != 1) ) AS TempTable
                ) AS  PagerTable
                WHERE PagerTable.[PageIndex] BETWEEN 1 AND 6 option(recompile,maxdop 16)


历史记录  
  1. 2024-06-05 11:08:47, 由 吴高发 创建。
  2. 2024-06-05 11:09:52, 由 吴高发 编辑。
    修改了 解决时效,旧值为 "0",新值为 "-1"。
    修改了 影响环境,旧值为 "577,",新值为 "577"。

    建议优化:

    declare @CustomerID int= 1 ,@CurrentAdminID int= 8728 ,@IsPay int= 1 ,@StartTime datetime= '2024/6/1 0:00:00' ,@EndTime datetime= '2024/6/5 23:59:59' ,@Codes varchar(50)= '15457924' ,@OrderListStartTime datetime= '2024/6/1 0:00:00' ,@OrderListEndTime datetime= '2024/6/20 23:59:59' ,@OrderProfitEnd money= -0.01 ,@SaleAdminID int= 8728 ;

    drop table if exists #tabInfo;
    SELECT
    * into #tabInfo
    FROM RB_OrderInfo oi WITH(nolock)             
    WHERE  oi.CustomerID = @CustomerID
    AND oi.IsStockOrder = 0 AND oi.OrderStatus IN ( 3 ) AND oi.IsPay = @IsPay AND oi.AddTime >= @StartTime AND oi.AddTime <= @EndTime  
    AND Exists (  SELECT 1 FROM RB_OrderList ol WITH(nolock) WHERE ol.CustomerID = @CustomerID  AND ol.AddTime >= @OrderListStartTime AND ol.AddTime <= @OrderListEndTime AND ol.SKU IN ( SELECT item FROM CharSplitForIn(@Codes,',') )
    AND ol.CustomerID = oi.CustomerID AND ol.OrderCode = oi.OrderCode) AND (CONVERT(nvarchar(255),oi.OrderDescription) = '');

    SELECT * FROM (
                        SELECT ROW_NUMBER() OVER (ORDER BY AddTime DESC) AS [PageIndex] ,* FROM (SELECT oi.ID,oi.AliExpressTrusteeType,oi.AmazonShipmentId,
                    oi.OrderCode,
                    oi.ClientOrderCode,
                    oi.MainOrderCode,
                    oi.MergeOrderCode,
                    oi.SalesRecordNumber,
                    oi.OrderSourceID,
                    oi.ClientUserAccount,
                    oi.OrderStatus,
                    oi.OrderState,
                    oi.IsFirstDeliver,
                    ( CASE
                        WHEN oi.IsPriority > 0 THEN oi.IsPriority
                        ELSE Isnull(os.PriorityNum, 0)
                    END )                    AS IsPriority,
                    oi.PackagedIDs,
                    oi.IsASingleInTheEnd,
                    oi.PayerId,
                    oi.Email,
                    oi.SellerOrderId,
                    oi.IsPay,
                    oi.CommentType,
                    oi.TransactionId,
                    oi.PaymentType,
                    isnull(oi.RefundPrice,0) as RefundPrice,
                    isnull(oi.ThrowingRate,0) as ThrowingRate,
                    oi.TotalPrice,
                    oi.ExchangeRMB,
                    oi.ExchangeUSD,
                    oi.TransportPay,
                    oi.OtherPayPrice,
                    oi.ProductTotalPrice,
                    oi.PromotionDiscountAmount,
                    oi.CouponCode,
                    oi.CouponMinusPrice,
                    oi.DiscountMinusPrice,
                    oi.AddPayPrice,
                    oi.AddOrderReasonType,
                    oi.ShareType,
                    oi.ShareCustomerID,
                    oi.IsAccount,
                    oi.AccountTime,
                    oi.ShareTotalPrice,
                    oi.SynchronousTime,
                    oi.IsSynchronous,
                    oi.IsTogeInvoice,
                    ISNULL(oi.Encrypted,0) as Encrypted,
                    oi.FirstName,
                    oi.LastName,
                    oi.Address,
                    oi.District,
                    oi.CabinetNO,
                    oi.City,
                    oi.Province,
                    oi.Country,
                    oi.PostCode,
                    oi.Telephone,
                    oi.ShippingService,
                    oi.DownLoadUpdateTime,
                    oi.PromotionType,
                    oi.TrackNumberTemp,
                    oi.TrackNumbers,
                    oi.UpdatePlatformTime,
                    oi.MarkDeliveryState,
                    oi.EMPSDeliveryState,
                    oi.LogisticsOrderNo,
                    oi.LogisticsOrderNo1,
                    oi.ShipTime,
                    oi.OrderDescription,
                    oi.ISsynchOverseas,
                    oi.ProductNumber,
                    oi.ProductVolume,
                    oi.ProductWeight,
                    oi.PayTime,
                    oi.AddTime,
                    oi.UpdateTime,
                    oi.LatestShipDate,
                    oi.ServiceAdminName,
                    oi.SKUNumber,
                    oi.ReturnStatus,
                    oi.LatestDeliveryDate,
                    oi.VipDiscount,
                    Isnull(oi.IsTaxFree, 0) IsTaxFree,
                    oi.Currency,
                    os.ServiceAdminName        AS ServiceOSAdminName,
                    Isnull(oi.IsFBATransit, 0) IsFBATransit,
                    oi.WareHouseID,
                    wh.WareHouseName,
                    os.OrderSourceName,
                    os.OrderSourceType,
                    os.OrderSourceCountry,
                    os.AddTime AS OrderSourceAddTime,
                    CASE
                        WHEN os.AddTime >= DATEADD(MONTH,-3,GETDATE()) THEN '新'
                        ELSE '旧'
                    END NewOldSign,
                    e.Country_cn,
                    t.TransportName,
                    t.PMSTransport,
                    tapi.Transport_API_Class,
                    wh.WareHouseType,
                    oi.Token,
                    os.SaleAdminName,
                    os.VATNumber,
                    os.VATRate,
                    oi.SaveTrackNumbersTime,
                    t.TrackingNumberValidDays,
                    ISNULL(t.TrackNumbersIsNaturalDay,1) AS TrackNumbersIsNaturalDay,
                    datediff(day,getdate(),(dateadd(day,TrackingNumberValidDays,SaveTrackNumbersTime))) as TrackNumbersDiffDay,
                    bt.BusinessTeamName,
                    fbt.BusinessTeamName AS FBABusinessTeamName,
                    frba.UserName AS FBASaleAdminName,
                    mbt.BusinessTeamName AS FBMBusinessTeamName,
                    mrba.UserName AS FBMSaleAdminName,
                    t.ID AS TransportID,
                    e.ID AS CountryID,
                    oi.Oaid,
                    0 AS DeliveryStatus,
                    api.CertIDAccessKeyId,
                    ISNULL(cexpand.BillPdfUrl, '') BillPdfUrl,orderFin.PaymentStatus,orderFin.FundTransferStatus,profits.Profits,profits.ProfitRate,profits.OtherProfitRate, profits.OtherProfitRateTax,profits.OtherOrderFee,att1.IsAttachMail AS IsAttachMail   
                    FROM #tabInfo oi  
                    LEFT JOIN  RB_OrderSource os WITH(nolock)
                    ON oi.CustomerID = os.CustomerID AND oi.OrderSourceID = os.ID
                LEFT JOIN E_Country e WITH(nolock)
                    ON oi.Country = e.Shorthand
                LEFT JOIN RB_Transport t WITH(nolock)
                    ON oi.CustomerID = t.CustomerID AND oi.TransportID = t.ID
                LEFT JOIN RB_Transport_API tapi WITH(nolock)       
                    ON t.Transport_API_ID = tapi.ID AND t.CustomerID = tapi.CustomerID
                LEFT JOIN RB_WareHouse wh WITH(nolock)
                    ON oi.CustomerID = wh.CustomerID AND oi.WareHouseID = wh.ID
                LEFT JOIN RB_Admin rba WITH(nolock)
                    ON rba.CustomerID = os.CustomerID AND rba.ID = os.SaleAdminID
                LEFT JOIN RB_BusinessTeam bt WITH(nolock)
                    ON bt.CustomerID = os.CustomerID AND bt.ID = rba.BusinessTeamID
                LEFT JOIN RB_Admin frba WITH(nolock)
                    ON frba.CustomerID = os.CustomerID AND frba.ID = os.FBASaleAdminID
                LEFT JOIN RB_BusinessTeam fbt WITH(nolock)
                    ON fbt.CustomerID = frba.CustomerID AND fbt.ID = frba.BusinessTeamID
                LEFT JOIN RB_Admin mrba WITH(nolock)
                    ON mrba.CustomerID = os.CustomerID AND mrba.ID = os.FBMSaleAdminID
                LEFT JOIN RB_BusinessTeam mbt WITH(nolock)
                    ON mbt.CustomerID = mrba.CustomerID AND mbt.ID = mrba.BusinessTeamID
                LEFT JOIN RB_OrderSource_EbayAmazonAPI api WITH(nolock)
                    ON os.CustomerID = api.CustomerID AND os.ID = api.OrderSourceID
                LEFT JOIN RB_OrderInfo_ClientExpand (NOLOCK) cexpand
                                            ON oi.CustomerID = cexpand.CustomerID
                                               AND oi.OrderCode = cexpand.OrderCode
                LEFT JOIN RB_OrderInfo_FinancialExt (NOLOCK) orderFin
                                            ON oi.CustomerID = orderFin.CustomerID
                                               AND oi.OrderCode = orderFin.OrderCode LEFT JOIN RB_Order_Profits profits WITH(nolock)
                                                        ON oi.CustomerID = profits.CustomerID AND oi.OrderCode = profits.OrderCode  INNER JOIN (SELECT distinct CustomerID,OrderSourceID from RB_OrderSource_SaleAdmin WITH(nolock) where Adminid = @CurrentAdminID and CustomerID = @CustomerID)   ossa   ON ossa.OrderSourceID=oi.OrderSourceID and ossa.CustomerID=oi.CustomerID outer apply (SELECT Count(1) IsAttachMail
                            FROM   RB_OrderInfo_Attach att(nolock)
                            WHERE  att.CustomerID = oi.CustomerID
                                   AND att.OrderCode = oi.OrderCode) att1   
                                   WHERE
                                            (profits.Profits -ABS(profits.OtherOrderFee)) <= @OrderProfitEnd AND ((os.SaleAdminID = @SaleAdminID AND ISNULL(os.FBASaleAdminID,0) = 0 AND ISNULL(os.FBMSaleAdminID,0) = 0 ) OR (os.FBASaleAdminID = @SaleAdminID AND wh.WareHouseType = 3 ) OR (os.FBMSaleAdminID = @SaleAdminID AND wh.WareHouseType <> 3 ) AND os.OrderSourceType = 1 ) OR (os.SaleAdminID = @SaleAdminID AND os.OrderSourceType != 1) ) AS TempTable
                    ) AS  PagerTable
                    WHERE PagerTable.[PageIndex] BETWEEN 1 AND 6 option(recompile,maxdop 16)

  3. 2024-06-05 11:10:37, 由 吴高发 编辑。
    修改了 解决时效,旧值为 "0",新值为 "0.02"。
    修改了 上线时效,旧值为 "-1",新值为 "17746547.15"。

  4. 2024-06-05 11:18:22, 由 李乐同 指派给 程伟。
    修改了 指派给,旧值为 "liletong",新值为 "chengwei"。
  5. 2024-06-05 11:49:34, 由 程伟 指派给 谢业福。
    修改了 指派给,旧值为 "chengwei",新值为 "xieyefu"。
  6. 2024-06-05 19:54:37, 由 谢业福 解决,方案为 性能问题 。
    修改了 解决方案,旧值为 "",新值为 "performance"。
    修改了 解决版本,旧值为 "",新值为 "trunk"。
    修改了 解决日期,旧值为 "",新值为 "2024-06-05 19:54:18"。
    修改了 指派给 ,旧值为 "xieyefu",新值为 "liuchao"。
    修改了 Bug状态 ,旧值为 "active",新值为 "resolved"。
    修改了 是否确认,旧值为 "0",新值为 "1"。
    修改了 解决者 ,旧值为 "",新值为 "xieyefu"。
    性能优化
  7. 2024-06-12 16:22:42, 由 刘超 关闭。
    修改了 指派给 ,旧值为 "liuchao",新值为 "closed"。
    修改了 Bug状态 ,旧值为 "resolved",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "liuchao"。
    修改了 关闭日期,旧值为 "",新值为 "2024-06-12 16:22:42"。
所属项目 技术中心-需求池
所属模块 系统运维   性能优化
所属计划
所属迭代
Bug类型 性能问题
严重程度 一般
优先级 P1
Bug状态 已关闭
业务部门
影响功能
开发责任人 谢业福
测试责任人
解决时效 0.02
激活次数 0
激活日期
是否确认 是
当前指派 Closed 于 2024-06-12 16:22:42
截止日期 0000-00-00
上线时间 0000-00-00 00:00:00
上线时效 17746500
操作系统
浏览器
关键词
抄送给
所属迭代
相关需求
相关任务
由谁创建 吴高发 于 2024-06-05 11:08:47
影响环境 577
由谁解决 谢业福 于 2024-06-05 19:54:18
解决版本 主干
解决方案 性能问题
由谁关闭 刘超 于 2024-06-12 16:22:42
最后修改 刘超 于 2024-06-12 16:22:42
相关Bug