重现步骤

[性能问题描述]

SELECT p.[ID],p.[CustomerID],p.[OrderPositionID],p.[MergerPackageNo],p.[PackageIndex],p.[PackageType],p.[PackageState],p.[Country],p.[Province],p.[City],p.[Address],p.[PostCode],p.[Telephone],p.[TransportSupplierID],p.[TransportID],p.[WareHouseID],p.[TrackNumber],p.[ShipTime],p.[ShippingSupplierDiscount],p.[DeclarationPrice],p.[SystemWeight],p.[PackageWeight],p.[RegisteredFee],p.[HandleFee],p.[ShippingFee],p.[FinalShippingFee],p.[ActualShippingFee],p.[ActualShippingFeeTime],p.[ShippingAdminID],p.[ShippingAdminName],p.[GetPackageTraceTime],p.[PackageStatus],p.[DelivereDays],p.[LastPackageMemo],p.[SendEmailID],p.[SendEmailTime],p.[SecurityReturn],p.[SecurityReturnTime],p.[AddTime],p.[UpdateTime],p.[PrintBatchNo],p.[PrintInvoiceState],p.[PrintAddressState],p.[PrintTime],p.[GetTrackNumberTime],p.[PackagePositionCode],p.[TariffFee],p.[TurnNumber],p.[LogisticsOrderNo],p.[IsSameAddressMergerPackage],p.[AliLogisticsInfo],p.[PDFLabelFilePath],p.[IsAccount],p.[DeclarationPriceSum],p.[IsubmitPackConfirm],p.[PackageFollowState],p.[PackageLastFollowMsg],p.[PackageLastFollowDate],p.[DeliveredDays],p.[PackageFollowUpdateDate],p.[PickingPersonID],p.[PickingPersonName],p.[PackagingPersonID],p.[PackagingPersonName],p.[PackageLength],p.[PackageWidth],p.[PackageHeight],p.[PackageWeightDefault],p.[IsTaxAccount],p.[isWeightState],p.[PickingTime],p.[PackingTime],p.[PrintType],p.[WeighingPersonID],p.[WeighingPersonName],p.[TwoSortingExportNum],p.[IsOperateTaxFree],p.[StockOrderNumber],p.[SyncStockOrderStatus],p.[SyncStockOrderDate],p.[SyncStockOrderMsg],p.[CheckID],p.[CheckName],p.[DistributionTime],p.[AmazonCartonGuid],p.[FreightProof],p.[TaxationProof],p.[IsBiSycnComplete],p.[BiSycnCompleteTime],p.[PrintAdminID],p.[PrintAdminName],p.[PacketCost],p.[PrintInvoice],p.[FinalShippingFeeOrginAmount],p.[FinalShippingFeeOrginCurrency],p.[FinalShippingFeeOrginExchangeRMB],p.[TariffFeeOrginAmount],p.[TariffFeeOrginCurrency],p.[TariffFeeOrginExchangeRMB],p.[TallyPersonID],p.[TallyPersonName],p.[TallyTime],p.[IsStockOrderWithPackage],p.[SKUNumberWithPackage],p.[ProductNumberWithPackage],p.[BillingPersonID],p.[BillingPersonName],p.[BillingTime],p.[OrderPackageID],p.[CompleteTime],p.[ActualShippingFeeTime2],p.[PrintPackageType],p.[CheckTime],p.[VolumeWeight],p.[PackageFromType],p.[DeleteTime],p.[FirstReceivingTime],p.[NewTrackTime],p.[CompletePersonName],p.[CompletePersonID],p.[ShipmentsNo],p.[IsAutoRefreshShippingFee],p.[IsHasExceptionWhenPackageWeight],p.[OvertimeTagType],p.[FirstCompleteTime],p.[FirstPrintTime],p.[OvertimeTagTypeWithFirstComplete],p.[ThrowingRateFee],p.[VirtuallyFastType],p.[PackagePackState],p.[LogisticsAttributesId],p.[LogisticsAttributesName],p.[TallyPositionCode],p.[SynOverSeaOperateID],p.[SynOverSeaOperateName],p.[SellAddWeightType],p.[SellAddWeight],p.[SellAddWeightThrowingRate],ISNULL(p.[DataSource],0) AS [DataSource],CASE WHEN p.[PackageState] = 1 THEN 1 WHEN p.[PackageState] = 2 THEN CASE WHEN EXISTS (SELECT 1 FROM dbo.RB_Package_Picking_Package ppkg(nolock) INNER JOIN dbo.RB_Package_Picking_ChildWarehouseArea pca(nolock) ON ppkg.PickingGUID = pca.MainPickingGUID WHERE ppkg.PackageID = p.ID AND pca.PickingStatus IN (0,1)) THEN 2 ELSE 3 END WHEN p.[PackageState] = 5 THEN CASE WHEN EXISTS (SELECT 1 FROM dbo.RB_OrderInfo oi(nolock) INNER JOIN dbo.RB_OrderSource os(nolock) ON oi.OrderSourceID = os.id WHERE oi.orderCode = p.MergerPackageNo AND os.OrderSourceType = 1 AND (oi.AmazonShipmentId IS NULL OR oi.AmazonShipmentId = '')) THEN 4 ELSE 5 END WHEN p.[PackageState] = 3 THEN 6 ELSE NULL END AS package_status_view FROM dbo.RB_Procurement_Order_Package p(nolock) WHERE ISNULL(p.DataSource,0)=0 AND  p.WareHouseID IN ( SELECT ID FROM RB_WareHouse ( NOLOCK ) WHERE IsStockpile = 1 );

[分析过程]

SELECT count(0) FROM dbo.RB_Procurement_Order_Package p(nolock) WHERE ISNULL(p.DataSource,0)=0 AND  p.WareHouseID IN ( SELECT ID FROM RB_WareHouse ( NOLOCK ) WHERE IsStockpile = 1 )

609058 返回数据很大 


两个子查询返回的数据 查询次数就一共有120万次

CASE
         WHEN p.[PackageState] = 1 THEN 1
         WHEN p.[PackageState] = 2 THEN
           CASE
             WHEN EXISTS (SELECT 1
                          FROM   dbo.RB_Package_Picking_Package ppkg(nolock)
                                 INNER JOIN dbo.RB_Package_Picking_ChildWarehouseArea pca(nolock)
                                   ON ppkg.PickingGUID = pca.MainPickingGUID
                          WHERE  ppkg.PackageID = p.ID
                                 AND pca.PickingStatus IN ( 0, 1 )) THEN 2
             ELSE 3
           END
         WHEN p.[PackageState] = 5 THEN
           CASE
             WHEN EXISTS (SELECT 1
                          FROM   dbo.RB_OrderInfo oi(nolock)
                                 INNER JOIN dbo.RB_OrderSource os(nolock)
                                   ON oi.OrderSourceID = os.id
                          WHERE  oi.orderCode = p.MergerPackageNo
                                 AND os.OrderSourceType = 1
                                 AND ( oi.AmazonShipmentId IS NULL
                                        OR oi.AmazonShipmentId = '' )) THEN 4
             ELSE 5
           END

[期望结果]

采用读库同步 分页 处理 数据 

历史记录  
  1. 2026-08-27 16:13:16, 由 袁慧斌 创建。
  2. 2026-08-27 16:15:36, 由 李乐同 指派给 程伟。
    修改了 指派给,旧值为 "liletong",新值为 "chengwei"。
  3. 2026-08-27 16:20:08, 由 程伟 指派给 王海浪。
    修改了 指派给,旧值为 "chengwei",新值为 "wanghailang"。
  4. 2026-08-27 17:41:31, 由 王海浪 解决,方案为 性能问题 。
    修改了 解决方案,旧值为 "",新值为 "performance"。
    修改了 解决日期,旧值为 "",新值为 "2026-08-27 17:41:08"。
    修改了 指派给 ,旧值为 "wanghailang",新值为 "yuanhuibin"。
    修改了 Bug状态 ,旧值为 "active",新值为 "resolved"。
    修改了 是否确认,旧值为 "0",新值为 "1"。
    修改了 解决者 ,旧值为 "",新值为 "wanghailang"。
    dataX同步导致  已停止
  5. 2026-08-28 15:07:57, 由 袁慧斌 编辑。
    修改了 开发责任人,旧值为 "",新值为 "admin"。
    修改了 测试责任人,旧值为 "",新值为 "admin"。
    修改了 解决时效 ,旧值为 "0",新值为 "1.46"。
    修改了 截止日期 ,旧值为 "0000-00-00",新值为 "2026-08-27"。
    修改了 重现步骤 ,区别为:
    008- CASE WHEN p.[PackageState] = 1 THEN 1 WHEN p.[PackageState] = 2 THEN CASE WHEN EXISTS (SELECT 1 FROM dbo.RB_Package_Picking_Package ppkg(nolock) INNER JOIN dbo.RB_Package_Picking_ChildWarehouseArea pca(nolock) ON ppkg.PickingGUID = pca.MainPickingGUID WHERE ppkg.PackageID = p.ID AND pca.PickingStatus IN ( 0, 1 )) THEN 2 ELSE 3 END WHEN p.[PackageState] = 5 THEN CASE WHEN EXISTS (SELECT 1 FROM dbo.RB_OrderInfo oi(nolock) INNER JOIN dbo.RB_OrderSource os(nolock) ON oi.OrderSourceID = os.id WHERE oi.orderCode = p.MergerPackageNo AND os.OrderSourceType = 1 AND ( oi.AmazonShipmentId IS NULL OR oi.AmazonShipmentId = '' )) THEN 4 ELSE 5 END
    008+ CASE WHEN p.[PackageState] = 1 THEN 1 WHEN p.[PackageState] = 2 THEN CASE WHEN EXISTS (SELECT 1 FROM dbo.RB_Package_Picking_Package ppkg(nolock) INNER JOIN dbo.RB_Package_Picking_ChildWarehouseArea pca(nolock) ON ppkg.PickingGUID = pca.MainPickingGUID WHERE ppkg.PackageID = p.ID AND pca.PickingStatus IN ( 0, 1 )) THEN 2 ELSE 3 END WHEN p.[PackageState] = 5 THEN CASE WHEN EXISTS (SELECT 1 FROM dbo.RB_OrderInfo oi(nolock) INNER JOIN dbo.RB_OrderSource os(nolock) ON oi.OrderSourceID = os.id WHERE oi.orderCode = p.MergerPackageNo AND os.OrderSourceType = 1 AND ( oi.AmazonShipmentId IS NULL OR oi.AmazonShipmentId = '' )) THEN 4 ELSE 5 END
    008- <p>CASE<br /> WHEN p.[PackageState] = 1 THEN 1<br /> WHEN p.[PackageState] = 2 THEN<br /> CASE<br /> WHEN EXISTS (SELECT 1<br /> FROM dbo.RB_Package_Picking_Package ppkg(nolock)<br /> INNER JOIN dbo.RB_Package_Picking_ChildWarehouseArea pca(nolock)<br /> ON ppkg.PickingGUID = pca.MainPickingGUID<br /> WHERE ppkg.PackageID = p.ID<br /> AND pca.PickingStatus IN ( 0, 1 )) THEN 2<br /> ELSE 3<br /> END<br /> WHEN p.[PackageState] = 5 THEN<br /> CASE<br /> WHEN EXISTS (SELECT 1<br /> FROM dbo.RB_OrderInfo oi(nolock)<br /> INNER JOIN dbo.RB_OrderSource os(nolock)<br /> ON oi.OrderSourceID = os.id<br /> WHERE oi.orderCode = p.MergerPackageNo<br /> AND os.OrderSourceType = 1<br /> AND ( oi.AmazonShipmentId IS NULL<br /> OR oi.AmazonShipmentId = '' )) THEN 4<br /> ELSE 5<br /> END<br /></p>
    008+ <p>CASE<br /> WHEN p.[PackageState] = 1 THEN 1<br /> WHEN p.[PackageState] = 2 THEN<br /> CASE<br /> WHEN EXISTS (SELECT 1<br /> FROM dbo.RB_Package_Picking_Package ppkg(nolock)<br /> INNER JOIN dbo.RB_Package_Picking_ChildWarehouseArea pca(nolock)<br /> ON ppkg.PickingGUID = pca.MainPickingGUID<br /> WHERE ppkg.PackageID = p.ID<br /> AND pca.PickingStatus IN ( 0, 1 )) THEN 2<br /> ELSE 3<br /> END<br /> WHEN p.[PackageState] = 5 THEN<br /> CASE<br /> WHEN EXISTS (SELECT 1<br /> FROM dbo.RB_OrderInfo oi(nolock)<br /> INNER JOIN dbo.RB_OrderSource os(nolock)<br /> ON oi.OrderSourceID = os.id<br /> WHERE oi.orderCode = p.MergerPackageNo<br /> AND os.OrderSourceType = 1<br /> AND ( oi.AmazonShipmentId IS NULL<br /> OR oi.AmazonShipmentId = '' )) THEN 4<br /> ELSE 5<br /> END</p>
  6. 2026-09-01 15:25:56, 由 袁慧斌 关闭。
    修改了 Bug状态 ,旧值为 "resolved",新值为 "closed"。
    修改了 指派给 ,旧值为 "yuanhuibin",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "yuanhuibin"。
    修改了 关闭日期,旧值为 "",新值为 "2026-09-01 15:25:56"。
所属项目 技术中心-需求池
所属模块 供应链   仓储物流   物流
所属计划
所属迭代
Bug类型
严重程度 严重
优先级 P1
Bug状态 已关闭
业务部门
影响功能
开发责任人 admin
测试责任人 admin
解决时效 1.46
激活次数 0
激活日期
是否确认 是
当前指派 Closed 于 2026-09-01 15:25:56
截止日期 2026-08-27
上线时间 2026-08-27 17:40:00
上线时效 1.45
操作系统
浏览器
关键词
抄送给
所属迭代
相关需求
相关任务
由谁创建 袁慧斌 于 2026-08-27 16:13:15
影响环境 生产环境-线上测试
由谁解决 王海浪 于 2026-08-27 17:41:08
解决版本
解决方案 性能问题
由谁关闭 袁慧斌 于 2026-09-01 15:25:56
最后修改 袁慧斌 于 2026-09-01 15:25:56
相关Bug