SQLLab
dmlСредний

TRUNCATE

Мгновенно удаляет все строки таблицы, не читая их по одной — быстрее DELETE без WHERE.

Синтаксис
TRUNCATE TABLE table;
TRUNCATE TABLE table RESTART IDENTITY;

Объяснение

TRUNCATE очищает таблицу целиком, не сканируя и не удаляя строки по одной — вместо этого освобождает страницы данных напрямую. На больших таблицах это на порядки быстрее, чем DELETE FROM table без WHERE. Ключевое отличие от DELETE: TRUNCATE не вызывает построчные триггеры и по умолчанию не откатывается построчно в логах репликации так же детально. В PostgreSQL TRUNCATE всё же транзакционен (можно откатить через ROLLBACK), но обнуляет связанные SEQUENCE только с RESTART IDENTITY.

Пример

-- Полная очистка временной таблицы перед перезагрузкой данных
TRUNCATE TABLE staging_events;

-- Очистка со сбросом автоинкремента id
TRUNCATE TABLE staging_events RESTART IDENTITY;