TRUNCATE
Команда TRUNCATE является DDL командой, со всеми вытекающими моментами. Тем не менее, нужно помнить, что это самый быстрый способ очистки таблицы.
Особенности:
- Удаляет все строки из таблицы, оставляя таблицу пустой с сохранением структуры таблицы
- Перед выполнением происходит фиксация текущей транзакции.
- Так как это команда языка определения данных (DDL), а не языка DML, ее действие нельзя отменить простым образом.
- Если есть включенные FK, воспользоваться ей не получится.
Синтаксис:
Если вам зададут вопрос на собеседовании “какой самый быстрый способ очистки таблицы”, смело отвечайте командой truncate с учетом её особенностей 🎓
#sql #truncate
Команда TRUNCATE является DDL командой, со всеми вытекающими моментами. Тем не менее, нужно помнить, что это самый быстрый способ очистки таблицы.
Особенности:
- Удаляет все строки из таблицы, оставляя таблицу пустой с сохранением структуры таблицы
- Перед выполнением происходит фиксация текущей транзакции.
- Так как это команда языка определения данных (DDL), а не языка DML, ее действие нельзя отменить простым образом.
- Если есть включенные FK, воспользоваться ей не получится.
Синтаксис:
truncate table имя_таблицы;Очень часто используется. Знать необходимо.
Если вам зададут вопрос на собеседовании “какой самый быстрый способ очистки таблицы”, смело отвечайте командой truncate с учетом её особенностей 🎓
#sql #truncate
🔥1
Команда delete не сбрасывает HWM до нуля. HWM остается на прежнем уровне.
Получается, что в таблице нет данных, но HWM находится "на 3х метрах от земли". И СУБД нужно дойти именно до неё при full table scan.
Относительно нашего примера, как будто в таблице все еще оооочень много строк.
Наверное, немного сумбурное объяснение получилось.
Далее, интервьюер обычно задает вопросы:
1. Как нужно удалять данные, чтобы избежать этой ситуации?
Для полного удаления данных используется DDL-команда truncate (усечение), она как раз сбрасывает hwm на “уровень земли”. При этом молниеносно удаляет данные.
2. Как можно сбросить HWM?
Способов несколько. Тот же truncate, если данных нет. Через пересоздание таблицы - CTAS. Через команды перестроения таблицы/управления местом - shrink, move.
В комментариях @ex_electric таки запостил ответ на задачку 😉
Порой, непросто объяснить сложную вещь в одном посте. Дайте, пожалуйста, обратную связь 📊
#решениезадачи #truncate #hwm
Получается, что в таблице нет данных, но HWM находится "на 3х метрах от земли". И СУБД нужно дойти именно до неё при full table scan.
Относительно нашего примера, как будто в таблице все еще оооочень много строк.
Наверное, немного сумбурное объяснение получилось.
Далее, интервьюер обычно задает вопросы:
1. Как нужно удалять данные, чтобы избежать этой ситуации?
Для полного удаления данных используется DDL-команда truncate (усечение), она как раз сбрасывает hwm на “уровень земли”. При этом молниеносно удаляет данные.
2. Как можно сбросить HWM?
Способов несколько. Тот же truncate, если данных нет. Через пересоздание таблицы - CTAS. Через команды перестроения таблицы/управления местом - shrink, move.
В комментариях @ex_electric таки запостил ответ на задачку 😉
Порой, непросто объяснить сложную вещь в одном посте. Дайте, пожалуйста, обратную связь 📊
#решениезадачи #truncate #hwm