Подтвердить что ты не робот

Любая польза от явного удаления локальных временных таблиц в конце хранимой процедуры?

Рассмотрим следующий код psuedo T-SQL (выполняемый хранимой процедурой):

CREATE TABLE #localTable ...

<do something with the temporary table here>

DROP TABLE #localTable;

Оператор DROP TABLE - это последний оператор, выполняемый хранимым proceudre - есть ли какая-либо польза для этого утверждения?

Обратите внимание, что я не прошу о том, чтобы удалить временные таблицы (локальные или нет) в середине хранимой процедуры (т.е. после того, как таблицы больше не нужны, но до конца кода хранимой процедуры) - это может показаться имеют важные преимущества из-за уменьшения памяти, необходимой для продолжения выполнения хранимой процедуры. Я хочу знать, есть ли какая-либо польза (или какой-либо эффект, действительно, положительный или отрицательный) для явного отказа от таблицы в сравнении с тем, что позволяет SQL Server делать это, когда завершенная процедура заканчивается.

4b9b3361

Ответ 1

Не помешает это сделать, но таблица удаляется при отключении соединения. Я лично считаю, что это хорошая привычка. Это также позволяет разработчикам, которым, возможно, придется поработать над этим, что вы не просто забыли сделать это.

Ответ 2

Theres хорошее подробное сообщение на этом здесь.

Временной объект переименовывается во внутреннюю форму при выполнении DROP TABLE и переименовывается обратно в одно и то же имя пользователя, когда CREATE TABLE встречается при следующем выполнении. Кроме того, любая статистика, которая была автоматически создана во временной таблице, также кэшируется. Это означает, что статистика по предыдущему исполнению сохраняется при следующем вызове процедуры.

Ответ 3

Снижение темпа - хорошая привычка в противном случае они будут потреблять пространство в TEMP DB после нашей работы.

Это вызовет проблему пространства. Это очистится, только вы сократите БД TEMP или перезапустите сервер.