Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi une requête de base de données n'est-elle que lente dans l'application ?

Je suspecterais le reniflement de paramètre.

Le plan d'exécution mis en cache utilisé pour la connexion de votre application ne sera probablement pas utilisable par votre connexion SSMS en raison d'un set différent options afin de générer un nouveau plan différent.

Vous pouvez récupérer les plans mis en cache pour la procédure stockée à l'aide de la requête ci-dessous. Ensuite, comparez pour voir s'ils sont différents (par exemple, est-ce que celui qui est lent effectue des recherches d'index et des recherches de signets à un endroit où l'autre effectue une analyse ?)

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'