#sql #sql_server
На сколько я знаю, то при создании процедуры к ней крепится на мертво план-выполнения, до тех пор пока сервер не перезагрузится, либо процедура пересоздастся, либо не будет запущена с опцией WITH RECOMPILE, что может повлечь за собой просадку производительности из-за устаревшего плана. Предположим, процедура вызывает вложенные процедуры. Если процедура, которая вызывается с WITH RECOMPILE вызывает внутри себя процедуры без WITH RECOMPILE, то будет ли рассчитан оптимальный план вызова внутренних процедур? И наоборот: Что будет если внешняя процедура не имеет WITH RECOMPILE, а внутренние имеют.
Ответы
Ответ 1
План будет пересчитан только для родительской хранимой процедуры. Тут обратная история, планы будут пересчитаны только для для дочерних. Для проверки можете использовать: 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
Комментариев нет:
Отправить комментарий