Pradhan Gagan Ответов: 6

Разница между delete и truncate


Чем на самом деле отличается усечение от удаления

aaronzeng

УСЕКАТЬ

TRUNCATE-это команда DDL
Усечение выполняется с помощью блокировки таблицы, и вся таблица блокируется для удаления всех записей.
Мы не можем использовать предложение Where с усечением.
Усечение удаляет все строки из таблицы.
Минимальное ведение журнала транзакций, так что это быстрее с точки зрения производительности.
TRUNCATE TABLE удаляет данные, освобождая страницы данных, используемые для хранения табличных данных, и записывает только освобождения страниц в журнал транзакций.
Определение столбца сбрасывается в начальное значение, если таблица содержит столбец идентификаторов.
Чтобы использовать Truncate в таблице, вам нужно, по крайней мере, разрешение ALTER на таблицу.
Truncate использует меньшее пространство транзакций, чем оператор Delete.
Усечение не может использоваться с индексированными представлениями.

УДАЛИТЬ

DELETE-это команда DML.
Удаление выполняется с помощью блокировки строк, каждая строка в таблице блокируется для удаления.
Мы можем использовать предложение where с DELETE для фильтрации и удаления определенных записей.
Команда DELETE используется для удаления строк из таблицы на основе условия WHERE.
Он поддерживает журнал, поэтому он медленнее, чем усечение.
Оператор DELETE удаляет строки по одной и записывает запись в журнал транзакций для каждой удаленной строки.
Идентификатор столбца сохранить удалить сохранить идентичность.
Чтобы использовать Delete, вам нужно разрешение DELETE на таблицу.
Оператор Delete использует больше пространства транзакций, чем оператор Truncate.
Delete можно использовать с индексированными представлениями.

6 Ответов

Рейтинг:
46

parul77

УДАЛИТЬ
1. DELETE-это команда DML.
2. Delete выполняется с блокировкой строк, каждая строка в таблице является заблокированной для удаления.
3. мы можем указать фильтры в предложении where
4. Он удаляет указанные данные, если существует условие where.
5. Удаление активирует триггер, поскольку операции регистрируются индивидуально.
6. медленнее, чем усечение, потому что он хранит журналы.
7. Возможен откат.

УСЕКАТЬ
1. TRUNCATE-это команда DDL.
2. усечение таблицы всегда блокирует таблицу и страницу, но не каждую строку.
3. Нельзя использовать условие Where.
4. Он удаляет все данные.
5. усечение таблицы не может активировать триггер, поскольку операция не регистрирует отдельные удаления строк.
6. быстрее в плане производительности, потому что он не ведет никаких журналов.
7. Откат не возможен.

Удалить и обрезать как можно откатить при использовании транзакций.

Если транзакция выполнена, значит совершена, то мы не можем откатить команду TRUNCATE, но мы все еще можем откатить команду DELETE из лог-файлов, так как DELETE write записывает их в лог-файл в случае необходимости отката в будущем из лог-файлов.


VJ Reddy

Хороший ответ. 5!

Adarsh chauhan

Хорошее и по существу объяснение.. +5

parul77

спасибо тебе Редди

♥…ЯҠ…♥

Даже если его скопировать вставить из http://www.dotnetfunda.com/forums/show/9321/what-is-the-difference-between-delete-and-truncate-in-sql-server-я не могу голосовать там, наверху, поэтому делаю это здесь для ОП

anil.singh581

- Да!!!!

manub22

Я не согласен с вашим усеченным 7-м пунктом "7. Откат невозможен."

В усеченном операторе откат также возможен, если он находится под транзакцией. То же самое относится и к оператору DELETE.

Проверьте мой пост в блоге здесь по этому поводу: http://sqlwithmanoj.com/2009/02/22/difference-between-truncate-delete-and-drop-commands/

Рейтинг:
2

ersumitsahu

УДАЛИТЬ :

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

Усекать :

Он будет рубить лишний байт.

например . любая строка, которую вы дали размером 10
и если входной сигнал больше, чем 10 символов, остальные усе


Рейтинг:
2

Vikas Nalawade

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


Рейтинг:
1

OriginalGriff

Google-ваш друг: будьте любезны и часто навещайте его. Он может ответить на вопросы гораздо быстрее, чем разместить их здесь...

Очень быстрый поиск дал MSDN: http://msdn.microsoft.com/en-us/library/ms177570.aspx[^] - что объясняет в мельчайших подробностях!

В будущем, пожалуйста, постарайтесь провести хотя бы фундаментальные исследования самостоятельно, а не тратить впустую свое или наше время.


Рейтинг:
0

milenalukic

Если у вас есть столбец идентификатора в вашей таблице, delete будет вести запись об этом и при вставке будет продолжаться с последнего идентификатора.

Усечение очистит это и начнет снова с 1 или того, что вы сеете, настроено на.