I was wondering if you guys could help me get to the bottom of a weird problem I have recently had on SQL Server.
I have a stored procedure (lets call SPold
) which is reasonably large with a lot of calculations (can't possibly do this in app as info for around 6000 users needs to come back in a one-er (I reduce this to 1000 based on Surname)). The stored procedure usually executes in a couple of seconds, and is called once every couple of minutes.
Now this morning, the stored procedure was suddenly taking 4-10 times as long to execute, causing a number of timeouts. I discovered that by making a copy of the procedure with a new name (SPnew
) and executing, I would get the fast execution times again. This indicated to me that the execution plan was the problem with the original, SPold
, so I decided to execute it with recompile. This would return the results a quicker (although not as fast as SPnew
), but subsequent calls from users to SPold
were once again slow. It was like the new plan wasn't being kept.
What I have done is to fix this is put Exec SPnew
into SPold
, and now calls to SPold
are returning fast again.
Does anyone have any idea what is going on here? The only thing that updated overnight was the statistics, although I think that this should affect both SPold
and SPnew
.