Woher kommt ein Ausführungsplan?

Antworten:

9

SQL Server 2012 verfügt im Plan selbst über einen Indikator RetrievedFromCache, der entweder "true" oder "false" sein kann.

Dies scheint die Eigenschaft zu sein, nach der Sie fragen.

Dies ist ein Beispiel (die letzte Zeile zeigt die Eigenschaft):

<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">

Leider sehe ich in einem von SQL Server 2008 R2 generierten Plan nichts Ähnliches.

In SQL Server 2008 R2 können Sie die sys.dm_exec_query_statsSystem-DMV verwenden, um die creation_timeSpalte auf Pläne mit demselben query_hashWert zu untersuchen. Der Abfrage-Hash kann aus dem Header des Plan-XML abgerufen werden (siehe Beispiel oben). Diese Abfrage gibt Zeilen bezüglich des oben genannten Plans zurück:

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