Da dove viene un piano di esecuzione?


Risposte:


9

SQL Server 2012 ha un indicatore nel piano stesso RetrievedFromCache, che può essere "vero" o "falso".

Questa sembra essere la proprietà di cui stai chiedendo.

Questo è un esempio (l'ultima riga mostra la proprietà):

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

Sfortunatamente, non vedo nulla di simile in un piano generato da SQL Server 2008 R2.

In SQL Server 2008 R2, è possibile utilizzare il sys.dm_exec_query_statssistema DMV per ispezionare la creation_timecolonna per piani con lo stesso query_hashvalore. L'hash della query può essere ottenuto dall'intestazione del piano XML (vedere l'esempio sopra). Questa query restituirà righe relative al piano sopra menzionato:

SELECT *
FROM sys.dm_exec_query_stats qs
WHERE qs.query_hash = 0x9A4B63A948B30EA0;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.