Страницы

Поиск по вопросам

среда, 4 марта 2020 г.

WITH RECOMPILE в процедурах MS SQL

#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

Комментариев нет:

Отправить комментарий