Un caso extraño y que sucede más a menudo de lo esperado es cuando un procedimiento almacenado tarda más en ejecutarse que al hacer el mismo ejercicio en el editor de consultas de SSMS, en este artículo presentaré una técnica aprendida recientemente
El tema está con los parámetros: cuando tengo un procedimiento con el siguiente esquema:
create procedure MiProcedimiento @Valor1 int, @Valor2 varchar(50), @valor3 date as begin ............
y dicho procedimiento tarda mucho tiempo y no tarda mucho menos en SSMS sugiero intentar lo siguiente:
create procedure MiProcedimiento @Valor1 int, @Valor2 varchar(50), @valor3 date as begin declare @Valor1Interna int = @Valor1, @Valor2Interna varchar(50) = @Valor2, @valor3Interna date =@Valor3 --Cuerpo del procedimiento End
En mi experiencia he encontrado que al aplicar este truco el rendimiento del procedimiento es el mismo que el encontrado en SSMS, declarar las variables internamente favorece el rendimiento, no es necesario hacerlo en todas las ocaciones, pero resuelve el problema planteado
Espero sea de ayuda,
FREDDY LEANDRO ANGARITA CASTELLANOS
Sql Server MVP