• To add to Sean's post above 2 other things to review.

    1) If the query is dynamic, and isn't built correctly, each query could be generating a new execution plan, which wouldn't show up under re-compiles, because, well it isn't a recompile.

    So a dynamic query such as @query = N'SELECT Column1, Column2 FROM TABLE1 WHERE SomeDate >= ' + CONVERT(NVARCHAR(100), DATEADD(DAY, -1, GETDATE())

    Due to the time stamp, ever single query would change and there by every single query would generate a new execution plan. 1 bad plan, and time to slowdown.

    2) If you are using a number of Table valued function and or Scalar functions with a lot of business logic in it, these cause issues with execution plans due to the way in which sql determines the cardinality of the underlying table joins. From personal experience, sometime they just decide to explode. The only real way to handle is to not use them.

    Fraggle