Ответ 1
Усечение таблицы не оставляет записей строки за строкой в журнале транзакций, поэтому ни одно из решений не будет слишком сильно мешать вашим журналам. Если бы это был я, я бы урезал необходимость бросать и создавать каждый раз.
У меня есть эта таблица в экземпляре SQL Server 2008 R2, у меня есть запланированный процесс, который работает против него в ночное время. Таблица может иметь до 500K записей в нем в любой момент времени. После обработки этой таблицы мне нужно удалить из нее все строки, поэтому мне интересно, какой из следующих методов приведет к наименьшим издержкам (т.е. Записи с избыточным протоколом транзакций):
Удаление содержимого таблицы происходит из-за времени и дополнительных записей журнала транзакций, которые он делает.
Консенсус, похоже, является усечением, спасибо всем!
Усечение таблицы не оставляет записей строки за строкой в журнале транзакций, поэтому ни одно из решений не будет слишком сильно мешать вашим журналам. Если бы это был я, я бы урезал необходимость бросать и создавать каждый раз.
TRUNCATE TABLE
- ваш лучший выбор. Из MSDN:
Удаляет все строки из таблицы без регистрации отдельной строки удаления.
Таким образом, это означает, что он не раздует ваш журнал транзакций. Отбрасывание и создание таблицы требует не только более сложного SQL, но и дополнительных разрешений. Любые настройки, прикрепленные к таблице (триггеры, GRANT
или DENY
и т.д.), Также необходимо будет перестроить.
Я бы пошел за TRUNCATE TABLE. У вас могут возникнуть накладные расходы, когда индексы, триггеры и т.д. Будут сброшены. Кроме того, вы потеряете разрешения, которые также должны быть восстановлены вместе с любыми другими требуемыми объектами, необходимыми для этой таблицы.
Также на DROP TABLE в MDSN ниже он упоминает небольшую ошибку, если вы выполняете DROP и CREATE TABLE в той же партии
ТАБЛИЦА DROP и CREATE TABLE не должны выполняться в одной таблице в той же партии. В противном случае может произойти непредвиденная ошибка.
Отбрасывание таблицы приведет к уничтожению любых связанных объектов (индексов, триггеров) и может привести к неправильной процедуре или представлениям. Я бы пошел с усечением, так как он не взорвет ваш журнал и не вызовет ни одной из возможных проблем, которые выпадают и создаются.