|  | Posted by sqlgirl on 07/16/07 22:03 
Hi,
 We are trying to solve a real puzzle. We have a stored procedure that
 exhibits *drastically* different execution times depending on how its
 executed.
 
 When run from QA, it can take as little as 3 seconds. When it is
 called from an Excel vba application, it can take up to 180 seconds.
 Although, at other times, it can take as little as 20 seconds from
 Excel.
 
 Here's a little background. The 180 second response time *usually*
 occurs after a data load into a table that is referenced by the stored
 procedure.
 
 A check of DBCC show_statistics shows that the statistics DO get
 updated after a large amount of data is loaded into the table.
 
 *** So, my first question is, does the updated statistics force a
 recompile of the stored procedure?
 
 Next, we checked syscacheobjects to see what was going on with the
 execution plan for this stored procedure. What I expected to see was
 ONE execution plan for the stored procedure.
 
 This is not the case at all. What is happening is that TWO separate
 COMPILED PLANs are being created, depending on whether the sp is run
 from QA or from Excel.
 
 In addition, there are several EXECUTABLE PLANs that correspond to the
 two COMPILED PLANs. Depending on *where* the sp is run, the usecount
 increases for the various EXECUTABLE PLANS.
 
 To me, this does not make any sense! Why are there *multiple* compile
 and executable plans for the SAME sp?
 
 One theory we have is, that we need to call the sp with the dbo
 qualifier, ie) EXEC dbo.sp
 
 Has anyone seen this? I just want to get to the bottom of this and
 find out why sometimes the query takes 180 seconds and other times
 only takes 3 seconds!!
 
 Please help.
 
 Thanks much
  Navigation: [Reply to this message] |