Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché una query del database va solo lentamente nell'applicazione?

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'