Есть ли какая-то польза от явного удаления локальных временных таблиц в конце хранимой процедуры? - PullRequest
18 голосов
/ 12 января 2011

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

CREATE TABLE #localTable ...

<do something with the temporary table here>

DROP TABLE #localTable;

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

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

Ответы [ 3 ]

8 голосов
/ 03 июля 2013

Вот хороший подробный пост об этом здесь .

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

7 голосов
/ 12 января 2011

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

0 голосов
/ 08 января 2014

Удаление таблицы Temp - хорошая привычка, так как в противном случае она потребляет пространство в БД TEMP после нашей операции.

Это приведет к проблеме с пространством.Это будет очищено только при сжатии базы данных TEMP или перезапуске сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...