УДАЛИТЬ TableA вместо TRUNCATE TableA?
Распространенным заблуждением является то, что они делают то же самое. Не
так. На самом деле между ними много различий.
УДАЛЕНИЕ - это занесенная в журнал операция для каждой строки. Это означает
что удаление каждой строки регистрируется и физически удаляется.
Вы можете УДАЛИТЬ любую строку, которая не будет нарушать ограничение, оставляя внешний ключ или любое другое ограничение на месте.
TRUNCATE - это также зарегистрированная операция, но другим способом.
TRUNCATE регистрирует освобождение страниц данных, в которых данные
существует. Освобождение страниц данных означает, что ваши данные
строки на самом деле существуют на страницах данных, но
экстенты были помечены как пустые для повторного использования. Это то, что
делает TRUNCATE более быстрой операцией, выполняемой через DELETE.
Вы не можете TRUNCATE таблицы, которая имеет какой-либо внешний ключ
ограничения. Вы должны будете удалить ограничения, TRUNCATE
таблицы, и повторно примените ограничения.
TRUNCATE сбрасывает все столбцы идентификаторов в начальное число по умолчанию
значение.