Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Por que uma consulta de banco de dados só fica lenta no aplicativo?


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'