Dovrai perdonare la mia ingenuità poiché non sono un DBA, ma la mia comprensione è che nel tempo le statistiche di una modifica del database e una procedura memorizzata devono essere ricompilate per mantenere aggiornato il piano di query con le ultime statistiche.
Considerando che io ho una procedura immagazzinata nel mio database che viene ricompilato contro le ultime statistiche in alcuni intervalli regolari, quali sono le implicazioni di in-rivestimento della stored procedure in codice e avvolgendolo in una sp_executesql
dichiarazione? Perdo l'aggiornamento del piano di query utilizzato in precedenza durante la ricompilazione della procedura?
Se c'è qualcos'altro (diverso dalle autorizzazioni) che devo considerare prima di apportare questa modifica, apprezzerei le tue intuizioni.
Ho letto questo su MSDN:
La capacità di Query Optimizer di SQL Server di abbinare la nuova stringa Transact-SQL a un piano di esecuzione esistente è ostacolata dai valori dei parametri in costante cambiamento nel testo della stringa, in particolare nelle complesse istruzioni Transact-SQL.
Quindi, supponendo che la procedura memorizzata che sto tentando di sp_executesql
incorporare e racchiudere in effetti contenga alcuni parametri, sta dicendo che sebbene il mio piano di esecuzione sia memorizzato nella cache, sto rendendo più difficile per SQL Server trovarlo e riutilizzarlo?