DELETE
удаляет строки по одной, записывая каждое удаление в лог транзакций. Поддерживает операторы WHERE
для выборочного удаления и возвращает количество удаленных строк. Может быть откачен (ROLLBACK
).
TRUNCATE
удаляет все строки из таблицы, освобождая используемое пространство, без записи отдельных удалений в лог транзакций (записывается только факт операции). Не поддерживает операторы WHERE
. Как правило, выполняется быстрее, чем DELETE
без условия WHERE
. TRUNCATE
не запускает триггеры ON DELETE
. Не может быть полностью откачен в большинстве случаев, так как операция считается DDL (Data Definition Language), хотя в некоторых СУБД (например, PostgreSQL) TRUNCATE
может участвовать в транзакциях и быть откачен.
Ключевые отличия:
| Признак | DELETE | TRUNCATE
DELETE
удаляет строки по одной, записывая каждое удаление в лог транзакций. Поддерживает операторы WHERE
для выборочного удаления и возвращает количество удаленных строк. Может быть откачен (ROLLBACK
).
TRUNCATE
удаляет все строки из таблицы, освобождая используемое пространство, без записи отдельных удалений в лог транзакций (записывается только факт операции). Не поддерживает операторы WHERE
. Как правило, выполняется быстрее, чем DELETE
без условия WHERE
. TRUNCATE
не запускает триггеры ON DELETE
. Не может быть полностью откачен в большинстве случаев, так как операция считается DDL (Data Definition Language), хотя в некоторых СУБД (например, PostgreSQL) TRUNCATE
может участвовать в транзакциях и быть откачен.
Ключевые отличия:
| Признак | DELETE | TRUNCATE
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.