¿De dónde viene un plan de ejecución?

Respuestas:

9

SQL Server 2012 tiene un indicador en el plan en sí RetrievedFromCache, que puede ser "verdadero" o "falso".

Esta parece ser la propiedad sobre la que está preguntando.

Esta es una muestra (la última línea muestra la propiedad):

<StmtSimple StatementCompId="1" StatementEstRows="1" StatementId="1" 
StatementOptmLevel="FULL" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" 
StatementSubTreeCost="0.0508992" StatementText="SELECT COUNT(*) 
&#xD;&#xA;FROM sys.tables" StatementType="SELECT" 
QueryHash="0x9A4B63A948B30EA0" QueryPlanHash="0xF357CAE882D5B15D" 
RetrievedFromCache="true">

Desafortunadamente, no veo nada similar en un plan generado por SQL Server 2008 R2.

En SQL Server 2008 R2, puede usar el sys.dm_exec_query_statssistema DMV para inspeccionar la creation_timecolumna en busca de planes que tengan el mismo query_hashvalor. El hash de consulta se puede obtener del encabezado del plan XML (consulte el ejemplo anterior). Esta consulta devolverá filas con respecto al plan mencionado anteriormente:

SELECT *
FROM sys.dm_exec_query_stats qs
WHERE qs.query_hash = 0x9A4B63A948B30EA0;
Max Vernon
fuente