Musisz wybaczyć mojej naiwności, ponieważ nie jestem DBA, ale rozumiem, że z czasem statystyki zmiany bazy danych i procedura składowana muszą zostać ponownie skompilowane, aby plan kwerendy był aktualny z najnowszymi statystykami.
Zakładając, że mam procedurę przechowywaną w mojej bazy danych, która jest zrekompilowane przed najnowszymi statystykami w pewnym regularnych odstępach czasu, jakie są implikacje w-podszewka procedurę przechowywaną w kodzie i owijając go w sp_executesql
rachunku? Czy tracę odświeżenie planu zapytań, które miało miejsce w ramach ponownej kompilacji procedury?
Jeśli jest coś jeszcze (oprócz uprawnień), które muszę wziąć pod uwagę przed wprowadzeniem tej zmiany, byłbym wdzięczny za twoje spostrzeżenia.
Przeczytałem to na MSDN:
Zdolność optymalizatora zapytań SQL Server do dopasowania nowego ciągu Transact-SQL z istniejącym planem wykonania jest utrudniona przez ciągle zmieniające się wartości parametrów w tekście ciągu, szczególnie w złożonych instrukcjach Transact-SQL.
Więc zakładając, że procedura składowana, którą próbuję wbudować i zawinąć sp_executesql
, rzeczywiście zawiera pewne parametry, czy to mówi, że chociaż mój plan wykonania jest buforowany, utrudniam SQL Serverowi jego znalezienie i ponowne użycie?
źródło