Как работает TRUNCATE vs DELETE?

Junior
568 просмотров
AFK Offer AI

DELETE удаляет строки по одной, пишет каждую в WAL, срабатывают триггеры, можно с WHERE. TRUNCATE — сбрасывает таблицу целиком, не сканируя строки. TRUNCATE в разы быстрее для полной очистки: вместо удаления миллионов строк просто помечает страницы как свободные. Но: TRUNCATE нельзя с WHERE, он берёт ACCESS EXCLUSIVE lock (блокирует всех), и триггеры ON DELETE не срабатывают (есть ON TRUNCATE). TRUNCATE CASCADE — каскадно очистит связанные таблицы. Для тестов — TRUNCATE, для выборочного удаления — DELETE.

Следующий вопрос

Как работать с CLI flags?