Sobes.tech
Senior
20

Чем отличается DELETE от TRUNCATE?

Компании, где спрашивали
FREEDOM LIFESTYLE

Ответ от нейросети

sobes.tech AI

DELETE и TRUNCATE — это команды SQL для удаления данных из таблиц, но они существенно отличаются по поведению и характеристикам:

  • DELETE:

    • Удаляет строки по условию (если указано), или все строки, если условие отсутствует.
    • Операция логируется построчно (в журнал транзакций), что позволяет откатить изменения.
    • Можно использовать с WHERE для выборочного удаления.
    • Может быть медленнее при удалении большого объёма данных.
    • Триггеры DELETE срабатывают.
  • TRUNCATE:

    • Удаляет все строки из таблицы целиком.
    • Обычно работает быстрее, так как не логирует удаление каждой строки, а просто освобождает страницы данных.
    • Не позволяет использовать WHERE.
    • Не вызывает триггеры DELETE.
    • Часто сбрасывает счётчик автоинкремента.
    • Не всегда можно откатить (зависит от СУБД).

Итого, DELETE — гибкий и безопасный способ удаления, подходящий для выборочного удаления и когда важна возможность отката. TRUNCATE — быстрый способ очистить всю таблицу, но с ограничениями и менее гибкий.