Назад к вопросам
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;