Senior
20
Чем отличается DELETE от TRUNCATE?
Компании, где спрашивали
FREEDOM LIFESTYLE
Ответ от нейросети
sobes.tech AI
DELETE и TRUNCATE — это команды SQL для удаления данных из таблиц, но они существенно отличаются по поведению и характеристикам:
-
DELETE:
- Удаляет строки по условию (если указано), или все строки, если условие отсутствует.
- Операция логируется построчно (в журнал транзакций), что позволяет откатить изменения.
- Можно использовать с WHERE для выборочного удаления.
- Может быть медленнее при удалении большого объёма данных.
- Триггеры DELETE срабатывают.
-
TRUNCATE:
- Удаляет все строки из таблицы целиком.
- Обычно работает быстрее, так как не логирует удаление каждой строки, а просто освобождает страницы данных.
- Не позволяет использовать WHERE.
- Не вызывает триггеры DELETE.
- Часто сбрасывает счётчик автоинкремента.
- Не всегда можно откатить (зависит от СУБД).
Итого, DELETE — гибкий и безопасный способ удаления, подходящий для выборочного удаления и когда важна возможность отката. TRUNCATE — быстрый способ очистить всю таблицу, но с ограничениями и менее гибкий.