Considérez ce qui suit "code"plan d'exécution réutilisation
define stmt1 = 'insert into T(a, b) values(1, 1);
define stmt2 = 'select * from T';
MSSqlCommand.Execute(stmt1;stmt2);
MSSqlCommand.Execute(stmt2);
L'étude des plans de requêtes mises en cache en utilisant:
SELECT [cp].[refcounts]
, [cp].[usecounts]
, [cp].[objtype]
, [st].[dbid]
, [st].[objectid]
, [st].[text]
, [qp].[query_plan]
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text (cp.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan (cp.plan_handle) qp ;
Mon impression est que le premier "Execute" génère un plan d'exécution composite au lieu de deux plans d'exécution singuliers, désactivant ainsi le second "Execute" réutilisant tout plan d'exécution généré dans le premier Execute.
Ai-je raison?