Назад к вопросам
Junior
66
questionbank

В чем разница между командами DELETE и TRUNCATE в SQL?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

Признак TRUNCATE TABLE DELETE FROM
Сброс данных Удаляет все строки из таблицы. Удаляет строки, соответствующие условию WHERE (если указано), или все строки (если WHERE отсутствует).
Сброс автоинкремента Обычно сбрасывает значение автоинкрементного поля. Не сбрасывает значение автоинкрементного поля.
Триггеры Не активирует триггеры на удаление. Активирует триггеры на удаление для каждой удаляемой строки.
Логирование Является DDL-операцией, обычно менее детализированное логирование. Является DML-операцией, логируется построчно.
Откат (ROLLBACK) Труднее или невозможно откатить (зависит от СУБД). Легко откатить внутри транзакции.
Производительность Значительно быстрее для полного удаления данных, так как не сканирует каждую строку. Медленнее при удалении большого количества строк из-за построчного удаления и логирования.
Блокировки Обычно блокирует всю таблицу. Блокирует строки или блокировкой таблицы (зависит от СУБД и масштаба).
-- Удаляет все строки из таблицы employees, сбрасывает автоинкремент.
TRUNCATE TABLE employees;
-- Удаляет все строки из таблицы employees.
DELETE FROM employees;
-- Удаляет строки из таблицы employees, где department_id равен 10.
DELETE FROM employees WHERE department_id = 10;