Усечение или удаление и создание таблицы

У меня есть эта таблица в экземпляре SQL Server 2008 R2, у меня есть запланированный процесс, который работает против него в ночное время. Таблица может иметь до 500K записей в нем в любой момент времени. После обработки этой таблицы мне нужно удалить из нее все строки, поэтому мне интересно, какой из следующих методов приведет к наименьшим издержкам (т.е. Записи с избыточным протоколом транзакций):

  • Таблица усечений
  • Снимите и заново создайте таблицу

Удаление содержимого таблицы происходит из-за времени и дополнительных записей журнала транзакций, которые он делает.

Консенсус, похоже, является усечением, спасибо всем!

Ответы

Ответ 1

Усечение таблицы не оставляет записей строки за строкой в ​​журнале транзакций, поэтому ни одно из решений не будет слишком сильно мешать вашим журналам. Если бы это был я, я бы урезал необходимость бросать и создавать каждый раз.

Ответ 2

TRUNCATE TABLE - ваш лучший выбор. Из MSDN:

Удаляет все строки из таблицы без регистрации отдельной строки удаления.

Таким образом, это означает, что он не раздует ваш журнал транзакций. Отбрасывание и создание таблицы требует не только более сложного SQL, но и дополнительных разрешений. Любые настройки, прикрепленные к таблице (триггеры, GRANT или DENY и т.д.), Также необходимо будет перестроить.

Ответ 3

Я бы пошел за TRUNCATE TABLE. У вас могут возникнуть накладные расходы, когда индексы, триггеры и т.д. Будут сброшены. Кроме того, вы потеряете разрешения, которые также должны быть восстановлены вместе с любыми другими требуемыми объектами, необходимыми для этой таблицы.

Также на DROP TABLE в MDSN ниже он упоминает небольшую ошибку, если вы выполняете DROP и CREATE TABLE в той же партии

ТАБЛИЦА DROP и CREATE TABLE не должны выполняться в одной таблице в той же партии. В противном случае может произойти непредвиденная ошибка.

Ответ 4

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