Oracle Developer👨🏻‍💻
3.21K subscribers
607 photos
68 videos
2 files
485 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...

Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
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