Eu suspeitaria de sniffing de parâmetros.
O plano de execução em cache usado para a conexão do seu aplicativo provavelmente não poderá ser usado por sua conexão SSMS devido a diferentes
set
opções para que ele gere um novo plano diferente. Você pode recuperar os planos em cache para o procedimento armazenado usando a consulta abaixo. Em seguida, compare para ver se eles são diferentes (por exemplo, o lento está fazendo buscas de índice e pesquisas de favoritos em um local onde o outro faz uma varredura?)
Use YourDatabase;
SELECT *
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
CROSS APPLY sys.dm_exec_query_plan(plan_handle)
cross APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
where sys.dm_exec_sql_text.OBJECTID=object_id('YourProcName')
and attribute='set_options'