Основные отличия команд TRUNCATE и DELETE в PostgreSQL:
- TRUNCATE быстрее и эффективнее DELETE при удалении всех данных из таблицы. 1 Это потому, что TRUNCATE не создаёт логов отмены, в то время как DELETE генерирует такие логи и может быть медленнее для больших таблиц. 1
- TRUNCATE сбрасывает автоинкрементные последовательности, связанные с таблицей, в то время как DELETE этого не делает. 1 Это может быть полезно, если нужно начать с новых данных. 1
Кроме того, DELETE работает на уровне строк, отмечая каждую строку, соответствующую условию WHERE, как удалённую. 4 TRUNCATE действует на уровне таблицы: вместо отдельной работы с каждой строкой она просто опустошает всю таблицу и создаёт новый файл данных. 4