Sobes.tech
Назад к вопросам
Junior — Middle
69

Какое из команд — TRUNCATE или DELETE — выполняется быстрее при очистке таблицы в базе данных?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:
TRUNCATE выполняется быстрее, потому что это операция DDL, которая быстро удаляет все строки, освобождая страницы данных без логирования каждой строки. DELETE — это DML, удаляющая строки по одной с логированием и возможностью отката, что занимает больше времени.

Определение:
TRUNCATE — это команда для быстрой очистки всей таблицы, которая удаляет все данные без построчного логирования. DELETE — команда для удаления строк из таблицы с возможностью указания условий и логированием каждой операции.

Пример использования:

-- Быстрая очистка всей таблицы
TRUNCATE TABLE employees;

-- Удаление всех строк с возможностью условий и отката
DELETE FROM employees WHERE department_id = 10;

Пояснение кода:
Код не требуется. TRUNCATE удаляет все данные сразу, освобождая страницы таблицы и сбрасывая счетчики, что происходит быстро и не записывается в журнал транзакций построчно. DELETE удаляет строки по одной, логируя каждое удаление, что замедляет процесс, особенно при большом объеме данных.

Ключевые моменты:

  • TRUNCATE — DDL, DELETE — DML.
  • TRUNCATE быстрее из-за отсутствия построчного логирования.
  • DELETE позволяет удалять выборочно с условиями.
  • TRUNCATE нельзя использовать, если есть внешние ключи без каскадного удаления.
  • DELETE поддерживает триггеры, TRUNCATE — нет.
  • TRUNCATE сбрасывает счетчики идентификаторов, DELETE — нет.