Зачем вам усекать непосредственно перед сбросом временной таблицы? - PullRequest
2 голосов
/ 09 апреля 2010

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

TRUNCATE TABLE #Temp
DROP TABLE #Temp

Ответы [ 6 ]

3 голосов
/ 10 апреля 2010

Другая причина в том, что DROP TABLE является полностью зарегистрированной операцией, поэтому, усекая сначала (что никогда не регистрируется), вы уменьшаете накладные расходы на журналирование транзакций.

2 голосов
/ 09 апреля 2010

Возможно, у автора сложилось впечатление, что DROP TABLE будет быстрее, если таблица уже пуста, и знал, что TRUNCATE будет быстрее, чем DELETE.

1 голос
/ 11 ноября 2011

Другая возможность состоит в том, что кодер пытается избежать отложенного сброса, который произойдет, если временная таблица больше 8 МБ. То есть обрежьте его и бросьте. Я не уверен, что движок SQL будет обманут этим, но это может привести к синхронной очистке. Я не понимаю, почему вы хотите это сделать, возможно, чтобы избежать проблем с накоплением отложенных дропов (временных таблиц для уничтожения)

1 голос
/ 10 апреля 2010

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

1 голос
/ 09 апреля 2010

Может быть кулак. (не то чтобы я идеален).

0 голосов
/ 09 апреля 2010

Возможно ли увидеть, если команда TRUNCATE выдает исключение из-за существующих внешних ключей?

...