[性能问题描述]
CODE:N1123054
Error:11_-2_0_-2146232060
SQL:CREATE TABLE #tempSku(item VARCHAR(400));
INSERT INTO #tempSku
EXEC proc_string_split @stringSku,',';
CREATE INDEX idx_item ON #tempSku(item); SELECT COUNT(1) FROM (
SELECT RB_Product_Supplier.SupplierType ,
RB_Product_Supplier.Remark,
CASE WHEN RB_Procurement_List.ProcPayType = 1 THEN '现金付款'
WHEN RB_Procurement_List.ProcPayType = 2 THEN '网络在线付款'
WHEN RB_Procurement_List.ProcPayType = 3 THEN '转帐付款'
WHEN RB_Procurement_List.ProcPayType = 4 THEN '阿里账期付款'
ELSE '未知类型'
END AS PaymentDayCn ,
RB_Product_Supplier.QQ ,
RB_Product_Supplier.WangWang ,
ISNULL(RB_Product_Supplier.ID, 0) AS SupplierID ,
RB_Product_Supplier.LoginSupplyType ,
WareHouseName ,
RB_Procurement_List.WareHouseID,
RB_Procurement_List.AOrderCode ,
ISNULL(RB_WareHouse.IsTaxFree, 0) AS IsTaxFree ,
E_Website.Domain ,
RB_Procurement_List.ID ,
RB_Procurement_List.P_Code ,
RB_Procurement_List.AddTime ,
RB_Procurement_List.PrintTime ,
RB_Procurement_List.FinishTime ,
RB_Procurement_List.ProcPayType ,
RB_Procurement_List.BuyerId ,
RB_Procurement_List.BuyerName ,
RB_Procurement_List.DevelopAdminName ,
RB_Procurement_List.ProcurementListState ,
RB_Procurement_List.FinishStatus ,
RB_Procurement_List.ProcurementLocation ,
RB_Procurement_List.SupplierName ,
RB_Procurement_List.ExpectedTimeOfDelivery ,
RB_Procurement_List.IsUrgent ,
RB_Procurement_List.IsFirstOrder ,
RB_Procurement_List.IsFirstSupplierOrder ,
RB_Procurement_List.IsFirstOrderWithinYear ,
ISNULL(RB_OrderInfo.OrderStatus, 0) OrderStatus ,
'' AS SingleInfo ,
RB_Product_Supplier.NetFromType,
RB_Product_Supplier.IsFBABarCode,
0 AS StillNeedNum, --还需
0 AS DemandNum,--需求数量
0 AS ActualBuyNum,--销单数量
0 AS SingleNum, --下单数量
0 AS PutNum, --入库数量
0.0000 AS EstimatedAmount, --预计金额
0.0000 AS ActualProductPrice,--实际金额
'' AS LastSingleTime,--最后下单实际
RB_OrderInfo.ClientOrderCode, --客户订单号
RB_Procurement_List.AutomaticOrderResult,--自动下单结果
RB_Procurement_List.IsAutomaticOrder,--是否自动下单
RB_Procurement_List.AutomaticOrderRemark,--自动下单错误备注
RB_Procurement_List.IsSample, --样品
RB_Procurement_List.SupplierSource,--供应商来源 0:1688 1:淘宝
ISNULL(RB_Procurement_List.IsFactoryDirectDeliveryOrder,0) AS IsFactoryDirectDeliveryOrder
FROM RB_Procurement_List (NOLOCK)
LEFT JOIN RB_Product_Supplier (NOLOCK) ON RB_Procurement_List.SupplierID = RB_Product_Supplier.ID
AND RB_Procurement_List.CustomerID = RB_Product_Supplier.CustomerID
LEFT JOIN E_Website (NOLOCK) ON E_Website.CustomerID = RB_Procurement_List.CustomerID
LEFT JOIN RB_WareHouse (NOLOCK) ON RB_Procurement_List.WareHouseID = RB_WareHouse.ID
AND RB_Procurement_List.CustomerID = RB_WareHouse.CustomerID
LEFT JOIN RB_OrderInfo (NOLOCK) ON RB_OrderInfo.CustomerID = RB_Procurement_List.CustomerID
AND RB_OrderInfo.OrderCode = RB_Procurement_List.AOrderCode
WHERE ( RB_Procurement_List.CustomerID = 1 )
AND RB_Procurement_List.FinishStatus=0 AND (
RB_Procurement_List.P_Code IN (
SELECT P_Code
FROM RB_Procurement_Detail_SingleList WITH ( NOLOCK )
WHERE StepState IN ( 0, -1 )
AND IsDelete IS NULL
AND CustomerID = 1 ) ) AND RB_Procurement_List.AddTime >= '2025-03-07 00:00:00' AND RB_Procurement_List.AddTime <= '2025-03-07 23:59:59' ) AS PagerTable; DROP TABLE IF EXISTS #tempSku;
PARAMS:@stringSku = null ,@listIds = null ,
MESSAGE:执行超时已过期。完成操作之前已超时或服务器未响应。
TRACE: 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
在 System.Data.SqlClient.SqlDataReader.get_MetaData()
在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
在 System.Data.SqlClient.SqlCommand.ExecuteScalar()
在 RB.DAL.DBOperator.GetSingle(String SQLString, SqlCommand cmd, Int32 Times, SqlParameter[] cmdParms, Boolean IsWriteDB) 在 RB.DAL.DBOperator.toCommonTipException(SqlException ex, String sql, SqlParameter[] cmdParms)
在 RB.DAL.DBOperator.GetSingle(String SQLString, SqlCommand cmd, Int32 Times, SqlParameter[] cmdParms, Boolean IsWriteDB)
在 RB.DAL.DBOperator.QueryTemporaryTablePager(String sqlDeclare, String sqlRecycle, String SQLString, String strOrder, Int32 pageIndex, Int32 pageSize, Int32& recordCount, Int32 times, Boolean IsWriteDB, SqlParameter[] cmdParms)
在 RB.DALExtendV2.RB_Procurement_ListExtendV2.GetProcurementPageList(RB_Procurement_List_PSParametersExtend parameters, Int32& recordCount)
在 PandaBuy.ERP.Web.IrobotBox.ProcurementV2.ProcurementList_New.InitData()
在 PandaBuy.ERP.Web.IrobotBox.ProcurementV2.ProcurementList_New.Page_Load(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest()
在 System.Web.UI.Page.ProcessRequest(HttpContext context)
在 ASP.irobotbox_procurementv2_procurementlist_new_aspx.ProcessRequest(HttpContext context)
在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
在 System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
在 System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
在 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
在 System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
在 System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
[分析过程]
[期望结果]
包含有时间条件的情况下 建议 把
SELECT P_Code
FROM RB_Procurement_Detail_SingleList WITH ( NOLOCK )
WHERE StepState IN ( 0, -1 )
AND IsDelete IS NULL
AND CustomerID = 1
加入 AddTime>= '2025-03-07 00:00:00'
整体情况
declare @stringSku varchar(200)= '' ,@listIds varchar(200)= ''
CREATE TABLE #tempSku(item VARCHAR(400));
INSERT INTO #tempSku
EXEC proc_string_split @stringSku,',';
CREATE INDEX idx_item ON #tempSku(item); SELECT COUNT(1) FROM (
SELECT RB_Product_Supplier.SupplierType ,
RB_Product_Supplier.Remark,
CASE WHEN RB_Procurement_List.ProcPayType = 1 THEN '现金付款'
WHEN RB_Procurement_List.ProcPayType = 2 THEN '网络在线付款'
WHEN RB_Procurement_List.ProcPayType = 3 THEN '转帐付款'
WHEN RB_Procurement_List.ProcPayType = 4 THEN '阿里账期付款'
ELSE '未知类型'
END AS PaymentDayCn ,
RB_Product_Supplier.QQ ,
RB_Product_Supplier.WangWang ,
ISNULL(RB_Product_Supplier.ID, 0) AS SupplierID ,
RB_Product_Supplier.LoginSupplyType ,
WareHouseName ,
RB_Procurement_List.WareHouseID,
RB_Procurement_List.AOrderCode ,
ISNULL(RB_WareHouse.IsTaxFree, 0) AS IsTaxFree ,
E_Website.Domain ,
RB_Procurement_List.ID ,
RB_Procurement_List.P_Code ,
RB_Procurement_List.AddTime ,
RB_Procurement_List.PrintTime ,
RB_Procurement_List.FinishTime ,
RB_Procurement_List.ProcPayType ,
RB_Procurement_List.BuyerId ,
RB_Procurement_List.BuyerName ,
RB_Procurement_List.DevelopAdminName ,
RB_Procurement_List.ProcurementListState ,
RB_Procurement_List.FinishStatus ,
RB_Procurement_List.ProcurementLocation ,
RB_Procurement_List.SupplierName ,
RB_Procurement_List.ExpectedTimeOfDelivery ,
RB_Procurement_List.IsUrgent ,
RB_Procurement_List.IsFirstOrder ,
RB_Procurement_List.IsFirstSupplierOrder ,
RB_Procurement_List.IsFirstOrderWithinYear ,
ISNULL(RB_OrderInfo.OrderStatus, 0) OrderStatus ,
'' AS SingleInfo ,
RB_Product_Supplier.NetFromType,
RB_Product_Supplier.IsFBABarCode,
0 AS StillNeedNum, --还需
0 AS DemandNum,--需求数量
0 AS ActualBuyNum,--销单数量
0 AS SingleNum, --下单数量
0 AS PutNum, --入库数量
0.0000 AS EstimatedAmount, --预计金额
0.0000 AS ActualProductPrice,--实际金额
'' AS LastSingleTime,--最后下单实际
RB_OrderInfo.ClientOrderCode, --客户订单号
RB_Procurement_List.AutomaticOrderResult,--自动下单结果
RB_Procurement_List.IsAutomaticOrder,--是否自动下单
RB_Procurement_List.AutomaticOrderRemark,--自动下单错误备注
RB_Procurement_List.IsSample, --样品
RB_Procurement_List.SupplierSource,--供应商来源 0:1688 1:淘宝
ISNULL(RB_Procurement_List.IsFactoryDirectDeliveryOrder,0) AS IsFactoryDirectDeliveryOrder
FROM RB_Procurement_List (NOLOCK)
LEFT JOIN RB_Product_Supplier (NOLOCK) ON RB_Procurement_List.SupplierID = RB_Product_Supplier.ID
AND RB_Procurement_List.CustomerID = RB_Product_Supplier.CustomerID
LEFT JOIN E_Website (NOLOCK) ON E_Website.CustomerID = RB_Procurement_List.CustomerID
LEFT JOIN RB_WareHouse (NOLOCK) ON RB_Procurement_List.WareHouseID = RB_WareHouse.ID
AND RB_Procurement_List.CustomerID = RB_WareHouse.CustomerID
LEFT JOIN RB_OrderInfo (NOLOCK) ON RB_OrderInfo.CustomerID = RB_Procurement_List.CustomerID
AND RB_OrderInfo.OrderCode = RB_Procurement_List.AOrderCode
WHERE ( RB_Procurement_List.CustomerID = 1 )
AND RB_Procurement_List.FinishStatus=0 AND (
RB_Procurement_List.P_Code IN (
SELECT P_Code
FROM RB_Procurement_Detail_SingleList WITH ( NOLOCK )
WHERE StepState IN ( 0, -1 )
AND IsDelete IS NULL
AND CustomerID = 1
and AddTime>= '2025-03-07 00:00:00'
) ) AND RB_Procurement_List.AddTime >= '2025-03-07 00:00:00' AND RB_Procurement_List.AddTime <= '2025-03-07 23:59:59' ) AS PagerTable; DROP TABLE IF EXISTS #tempSku;
看看最新的
SELECT COUNT(1) FROM (
SELECT RB_Product_Supplier.SupplierType ,
RB_Product_Supplier.Remark,
CASE WHEN RB_Procurement_List.ProcPayType = 1 THEN '现金付款'
WHEN RB_Procurement_List.ProcPayType = 2 THEN '网络在线付款'
WHEN RB_Procurement_List.ProcPayType = 3 THEN '转帐付款'
WHEN RB_Procurement_List.ProcPayType = 4 THEN '阿里账期付款'
ELSE '未知类型'
END AS PaymentDayCn ,
RB_Product_Supplier.QQ ,
RB_Product_Supplier.WangWang ,
ISNULL(RB_Product_Supplier.ID, 0) AS SupplierID ,
RB_Product_Supplier.LoginSupplyType ,
WareHouseName ,
RB_Procurement_List.WareHouseID,
RB_Procurement_List.AOrderCode ,
ISNULL(RB_WareHouse.IsTaxFree, 0) AS IsTaxFree ,
E_Website.Domain ,
RB_Procurement_List.ID ,
RB_Procurement_List.P_Code ,
RB_Procurement_List.AddTime ,
RB_Procurement_List.PrintTime ,
RB_Procurement_List.FinishTime ,
RB_Procurement_List.ProcPayType ,
RB_Procurement_List.BuyerId ,
RB_Procurement_List.BuyerName ,
RB_Procurement_List.DevelopAdminName ,
RB_Procurement_List.ProcurementListState ,
RB_Procurement_List.FinishStatus ,
RB_Procurement_List.ProcurementLocation ,
RB_Procurement_List.SupplierName ,
RB_Procurement_List.ExpectedTimeOfDelivery ,
RB_Procurement_List.IsUrgent ,
RB_Procurement_List.IsFirstOrder ,
RB_Procurement_List.IsFirstSupplierOrder ,
RB_Procurement_List.IsFirstOrderWithinYear ,
ISNULL(RB_OrderInfo.OrderStatus, 0) OrderStatus ,
'' AS SingleInfo ,
RB_Product_Supplier.NetFromType,
RB_Product_Supplier.IsFBABarCode,
0 AS StillNeedNum, --还需
0 AS DemandNum,--需求数量
0 AS ActualBuyNum,--销单数量
0 AS SingleNum, --下单数量
0 AS PutNum, --入库数量
0.0000 AS EstimatedAmount, --预计金额
0.0000 AS ActualProductPrice,--实际金额
'' AS LastSingleTime,--最后下单实际
RB_OrderInfo.ClientOrderCode, --客户订单号
RB_Procurement_List.AutomaticOrderResult,--自动下单结果
RB_Procurement_List.IsAutomaticOrder,--是否自动下单
RB_Procurement_List.AutomaticOrderRemark,--自动下单错误备注
RB_Procurement_List.IsSample, --样品
RB_Procurement_List.SupplierSource,--供应商来源 0:1688 1:淘宝
ISNULL(RB_Procurement_List.IsFactoryDirectDeliveryOrder,0) AS IsFactoryDirectDeliveryOrder
FROM RB_Procurement_List (NOLOCK)
LEFT JOIN RB_Product_Supplier (NOLOCK) ON RB_Procurement_List.SupplierID = RB_Product_Supplier.ID
AND RB_Procurement_List.CustomerID = RB_Product_Supplier.CustomerID
LEFT JOIN E_Website (NOLOCK) ON E_Website.CustomerID = RB_Procurement_List.CustomerID
LEFT JOIN RB_WareHouse (NOLOCK) ON RB_Procurement_List.WareHouseID = RB_WareHouse.ID
AND RB_Procurement_List.CustomerID = RB_WareHouse.CustomerID
LEFT JOIN RB_OrderInfo (NOLOCK) ON RB_OrderInfo.CustomerID = RB_Procurement_List.CustomerID
AND RB_OrderInfo.OrderCode = RB_Procurement_List.AOrderCode
WHERE ( RB_Procurement_List.CustomerID = 1 )
AND RB_Procurement_List.FinishStatus=0 AND ( ( RB_Procurement_List.P_Code NOT IN (
SELECT
P_Code
FROM RB_Procurement_Detail WITH ( NOLOCK )
WHERE SingleNum > 0
AND ProductNum > 0 )
AND RB_Procurement_List.P_Code NOT IN (
SELECT P_Code
FROM RB_Procurement_Detail_SingleList WITH ( NOLOCK )
WHERE StepState IN ( 0, -1 )
AND IsDelete IS NULL
AND CustomerID = 1 )
) ) and ( RB_Procurement_List.IsSample = 0 or RB_Procurement_List.IsSample is null ) AND RB_Procurement_List.AddTime >= '2025-03-07 00:00:00' AND RB_Procurement_List.AddTime <= '2025-03-07 23:59:59' ) AS PagerTable;