В голове появилась одна вещь о mysql/sqlserver i.e удалить/усечь
Какой из них лучше и быстрее?
где использовать delete?
где использовать truncate?
В голове появилась одна вещь о mysql/sqlserver i.e удалить/усечь
Какой из них лучше и быстрее?
где использовать delete?
где использовать truncate?
УДАЛЯТЬ
TRUNCATE
Самое важное отличие заключается в том, что операции DELETE безопасны для транзакций и регистрируются, что означает, что DELETE можно отбросить назад. TRUNCATE не может быть сделано внутри транзакции и не может быть откат. Поскольку TRUNCATE не регистрируется, восстановление ошибочно таблицы TRUNCATEd является гораздо более серьезной проблемой, чем восстановление после DELETE.
DELETE не будет работать, если нарушены ограничения внешнего ключа; TRUNCATE не может соблюдать ограничения внешнего ключа (это делается для таблиц InnoDB). DELETE запускает любые триггеры ON DELETE; TRUNCATE не будет.
Операции усечения отбрасываются и воссоздают таблицу, что намного быстрее, чем удаление строк один за другим, особенно для больших таблиц.
когда таблица установлена в пустую, и для reset автоматически увеличивайте ключи до 1. Это быстрее, чем DELETE, поскольку он удаляет все данные. DELETE сканирует таблицу, чтобы сгенерировать количество строк, которые были затронуты.
нужны строки для удаления на основе необязательного предложения WHERE. нужны журналы и применяйте ограничения внешнего ключа
Команда DELETE
используется для удаления строк из таблицы
TRUNCATE
удаляет все строки из таблицы. Операцию нельзя отменить, и триггеры не будут запущены. Таким образом, TRUNCATE
работает быстрее и не использует столько пространства отмены, сколько DELETE
.
Difference:
1) удалите полные данные из таблицы, и следующий идентификатор автоматического увеличения начнется с 1 Где, когда удаление начнется со следующего id.
2) Оба будут держать strucutre неповрежденными и удалять данные только.
3) с удалением вы можете использовать предел, где, как и с усечением, вы не можете.