Sospetterei lo sniffing dei parametri.
Il piano di esecuzione memorizzato nella cache utilizzato per la connessione della tua applicazione probabilmente non sarà utilizzabile dalla tua connessione SSMS a causa di un diverso set
opzioni in modo da generare un nuovo piano diverso.
È possibile recuperare i piani memorizzati nella cache per la stored procedure utilizzando la query seguente. Quindi confronta per vedere se sono diversi (ad es. quello lento esegue ricerche di indice e ricerche di segnalibri in un punto in cui l'altro esegue una scansione?)
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'