Я вижу некоторый код, где автор обрезал временную таблицу непосредственно перед тем, как отбрасывать таблицу temp. Есть ли причина для этого?Зачем вам обрезать сразу перед тем, как сбросить временную таблицу?
TRUNCATE TABLE #Temp
DROP TABLE #Temp
Я вижу некоторый код, где автор обрезал временную таблицу непосредственно перед тем, как отбрасывать таблицу temp. Есть ли причина для этого?Зачем вам обрезать сразу перед тем, как сбросить временную таблицу?
TRUNCATE TABLE #Temp
DROP TABLE #Temp
Возможно, у автора сложилось впечатление, что DROP TABLE будет быстрее, если таблица уже была пустой, и знал, что TRUNCATE будет быстрее, чем DELETE.
Возможно, чтобы увидеть, если команда TRUNCATE
генерирует исключение из-за существующие внешние ключи?
Я полагаю, что это не из сферы возможностей, но этот конкретный код не находится в каком-либо блоке обработки ошибок. –
Я не могу думать ни о какой другой причине, кроме неправильного предположения (как упоминалось в ответе от CodeByMoonlight) – davek
Возможно, это кулак. (не то, что я совершенен).
В очень больших временных таблицах иногда быстрее усекать, а затем капли, потому что усечение просто перемещает указатель. Обычно это не нужно, поскольку временные таблицы теряются сами по себе.
Другая причина заключается в том, что DROP TABLE
является полностью зарегистрированной операцией, поэтому, сначала усекая (которая никогда не регистрируется), вы опускаете служебные данные транзакционного журнала.
Звучит разумно –
Недавно я узнал, что truncate зарегистрирован (но не как удаление), но я понимаю вашу точку. –
Joe вы получили это вспять. Удалить - logged truncate - нет. +1 Алекс, поскольку я не знал, что капля была зарегистрирована (и для меня это не имеет смысла). – Paparazzi
Другая возможность заключается в том, что кодер пытается избежать отложенного падения, которое произойдет, когда таблица temp больше 8 МБ. То есть укоротите его, затем опустите. Я не уверен, будет ли этот движок SQL обманут, но это может заставить синхронную очистку. Я не понимаю, почему вы хотите это сделать, возможно, чтобы избежать какой-либо проблемы с накоплением отложенных капель (таблицы Temp для уничтожения)
http://dba.stackexchange.com/questions/4163 имеет отличный анализ. TL; DR: DROP без TRUNCATE более эффективен. – Constantin
Отличная находка. Благодаря! –