Pour les requêtes dynamiques, le texte des requêtes doit être identique pour pouvoir être réutilisées. Des petites différences comme des caractères d'espace supplémentaires ou une différence de case dans le texte généreront des plans différents, et aucune réutilisation des plans cachés.
Les commentaires sont également considérés
V. Le texte des requêtes dynamiques doit être parfaitement identique
comme une partie du texte de la requête. Par conséquent les requêtes ci-dessous généreront deux plans cachés différents :
—this is an example of an adhoc query
if exists(Select Name From HumanResources.Department Where DepartmentID=10) declare @x int;
Go
—this is an example of an adhoc query with different comment
if exists(Select Name From HumanResources.Department Where DepartmentID=10) declare @x int;
Go
Utilisez la requête ci-dessous pour regarder le sql_handle et les plan_handles et pour noter qu’ils sont différents :
Select text, sql_handle, plan_handle
From sys.dm_Exec_query_stats qs Cross Apply sys.dm_Exec_sql_text(sql_handle)
Where text like ‘—this is an example %’
Go
Voir listing 3.
Attention aussi aux options positionnées lors de l’exécution des requêtes. Par exemple, OSQL positionne Quoted_ Identifier a ON alors que SQL Server Management Studio positionne Quoted_Identifier à OFF. Des requêtes identiques exécutées depuis ces différents clients auront des plans différents.
Téléchargez cette ressource
Travail à distance – Guide complet pour les Directions IT et Métiers
Le travail à distance met à l'épreuve la maturité numérique des entreprises en termes de Cybersécurité, d'espace de travail, de bien-être des collaborateurs, de communication et gestion de projet à distance. Découvrez, dans ce nouveau Guide Kyocera, quels leviers activer prioritairement pour mettre en place des solutions de travail à domicile efficaces, pérennes et sécurisées.