На сколько я знаю, то при создании процедуры к ней крепится на мертво план-выполнения, до тех пор пока сервер не перезагрузится, либо процедура пересоздастся, либо не будет запущена с опцией WITH RECOMPILE, что может повлечь за собой просадку производительности из-за устаревшего плана.
Предположим, процедура вызывает вложенные процедуры.
Если процедура, которая вызывается с WITH RECOMPILE вызывает внутри
себя процедуры без WITH RECOMPILE, то будет ли рассчитан оптимальный
план вызова внутренних процедур?
И наоборот: Что будет если внешняя процедура не имеет WITH RECOMPILE, а внутренние имеют.
Ответ
План будет пересчитан только для родительской хранимой процедуры.
Тут обратная история, планы будут пересчитаны только для для дочерних.
Для проверки можете использовать:
select o.name, s.*
from master..syscacheobjects s
inner join sysobjects o
on s.objid = o.id
where s.dbid = DB_ID()
order by o.name
Комментариев нет:
Отправить комментарий