我有一个存储过程,我最近在我的生产服务器上修改它开始表现不佳但是当我独立运行查询时它运行正常.时间差异很大,即比较5秒到10分钟是惊人的.
我读了这篇文章SQL Server:快速查询,但从程序缓慢,尝试用所有可能的解决方案解决我的问题,但仍然存储的proc不起作用它在时间上有相同的差异.
任何人都可以让我知道我应该更改什么,以便我的存储过程运行至少与查询一样快?我对SQL Server的这种行为感到有些惊讶
好计划
|--Clustered Index Seek(OBJECT:([IndusLynk].[dbo].[Assessment].[PK_Assessment] AS [a]), SEEK:([a].[Assessment_Id]=[@AssessmentID]) ORDERED FORWARD)
|--Compute Scalar(DEFINE:([Expr1009]=CONVERT_IMPLICIT(float(53),[Expr1008]-(1),0)))
|--Compute Scalar(DEFINE:([Expr1008]=CONVERT_IMPLICIT(int,[Expr1012],0)))
|--Stream Aggregate(DEFINE:([Expr1012]=Count(*)))
|--Stream Aggregate(GROUP BY:([ci].[Candidate_Instance_Id]))
|--Parallelism(Gather Streams, ORDER BY:([rr].[Candidate_Instance_ID] ASC))
|--Nested Loops(Inner Join, OUTER REFERENCES:([rr].[Candidate_Instance_ID]))
|--Sort(ORDER BY:([rr].[Candidate_Instance_ID] ASC))
| |--Clustered Index Scan(OBJECT:([IndusLynk].[dbo].[Processed_Response].[PK_Processed_Response] AS [rr]), WHERE:([IndusLynk].[dbo].[Processed_Response].[Assessment_ID] as [rr].[Assessment_ID]=[@AssessmentID] AND [IndusLynk].[dbo].[Processed_Response].[Client_ID] as [rr].[Client_ID]=[@UserID]))
|--Stream Aggregate(DEFINE:([ci].[Candidate_Instance_Id]=ANY([IndusLynk].[dbo].[Candidate_Instance].[Candidate_Instance_Id] as [ci].[Candidate_Instance_Id])))
|--Nested Loops(Inner Join, WHERE:([IndusLynk].[dbo].[Candidate_Instance].[Instance_Status] as [ci].[Instance_Status]=[status]))
|--Clustered Index Seek(OBJECT:([IndusLynk].[dbo].[Candidate_Instance].[PK_Candidate_Instance] AS [ci]), SEEK:([ci].[Candidate_Instance_Id]=[IndusLynk].[dbo].[Processed_Response].[Candidate_Instance_ID] as [rr].[Candidate_Instance_ID]) ORDERED FORWARD)
|--Table Scan(OBJECT:(@AssessmentStatuses))
|--Table Insert(OBJECT:(@ItemDetailTable), SET:([Candidate_Id] = [IndusLynk].[dbo].[Candidate].[Candidate_Id] as [c].[Candidate_Id],[Instance_End_Time] …Run Code Online (Sandbox Code Playgroud)