Tuve el mismo problema que el póster original, pero la respuesta citada no me resolvió el problema. La consulta aún se ejecutaba muy lentamente desde un procedimiento almacenado.
Encontré otra respuesta aquí "Parameter Sniffing", Gracias Omnibuzz. Se reduce al uso de "Variables locales" en sus consultas de procedimientos almacenados, pero lea el original para una mayor comprensión, es una excelente redacción. por ejemplo
Manera lenta:
CREATE PROCEDURE GetOrderForCustomers(@CustID varchar(20))
AS
BEGIN
SELECT *
FROM orders
WHERE customerid = @CustID
END
Vía rápida:
CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
AS
BEGIN
DECLARE @LocCustID varchar(20)
SET @LocCustID = @CustID
SELECT *
FROM orders
WHERE customerid = @LocCustID
END
Espero que esto ayude a alguien más, hacer esto redujo mi tiempo de ejecución de más de 5 minutos a unos 6-7 segundos.