Подтвердить что ты не робот

Сравнение truncate vs delete в mysql/sqlserver

В голове появилась одна вещь о mysql/sqlserver i.e удалить/усечь

Какой из них лучше и быстрее?

где использовать delete?

где использовать truncate?

4b9b3361

Ответ 1

УДАЛЯТЬ

  1. DELETE - это команда DML.
  2. Оператор DELETE выполняется с использованием блокировки строк, каждая строка в таблице заблокирована для удаления.
  3. Мы можем указать фильтры в предложении where
  4. Удаляет указанные данные, если существует условие.
  5. Удалить активирует триггер, потому что операция регистрируется индивидуально.
  6. Медленнее, чем усекать, потому что он ведет логи.
  7. Откат возможен.

TRUNCATE

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


  • DELETE и TRUNCATE можно откатить при использовании с TRANSACTION (TRUNCATE можно откатить в SQL Server, но не в MySQL).
  • если есть ПК с автоматическим приращением, усечение обнулит счетчик

http://beginner-sql-tutorial.com/sql-delete-statement.htm

Ответ 2

Разница

Самое важное отличие заключается в том, что операции DELETE безопасны для транзакций и регистрируются, что означает, что DELETE можно отбросить назад. TRUNCATE не может быть сделано внутри транзакции и не может быть откат. Поскольку TRUNCATE не регистрируется, восстановление ошибочно таблицы TRUNCATEd является гораздо более серьезной проблемой, чем восстановление после DELETE.

DELETE не будет работать, если нарушены ограничения внешнего ключа; TRUNCATE не может соблюдать ограничения внешнего ключа (это делается для таблиц InnoDB). DELETE запускает любые триггеры ON DELETE; TRUNCATE не будет.

БЫСТРЕЕ

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

Где использовать USE

усечение

когда таблица установлена ​​в пустую, и для reset автоматически увеличивайте ключи до 1. Это быстрее, чем DELETE, поскольку он удаляет все данные. DELETE сканирует таблицу, чтобы сгенерировать количество строк, которые были затронуты.

Удалить

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

Ответ 3

Команда DELETE используется для удаления строк из таблицы

TRUNCATE удаляет все строки из таблицы. Операцию нельзя отменить, и триггеры не будут запущены. Таким образом, TRUNCATE работает быстрее и не использует столько пространства отмены, сколько DELETE.

Ответ 4

Difference:

1) удалите полные данные из таблицы, и следующий идентификатор автоматического увеличения начнется с 1 Где, когда удаление начнется со следующего id.
2) Оба будут держать strucutre неповрежденными и удалять данные только.
3) с удалением вы можете использовать предел, где, как и с усечением, вы не можете.