Oracle ОБНОВЛЕНИЕ / * + append * / ROW MOVEMENT - PullRequest
0 голосов
/ 09 января 2020

У меня есть таблица, разделенная в соответствии с valid_to_date in Oracle 18. Движение строк включено.

I UPDATE valid_to_date столбец так что он перемещается из одного раздела в другой. Я полагаю, что Oracle внутренне делает что-то вроде DELETE в одном разделе и вставляет в другой раздел.

Делает что-то вроде обычного INSERT или INSERT / * + append * /

Потому что я знаю, / * + append * / более эффективен ...

Ответы [ 2 ]

1 голос
/ 09 января 2020

Движение строк не использует подсказку добавления, и нет, если вы не обновляете много строк, это НЕ более эффективно, чем простая вставка. Одна из простых причин, по которой его нельзя использовать, заключается в том, что после такой вставки вы не сможете использовать таблицу, если не выполните коммит / откат. Так что, если Oracle сделает APPEND под капотом, это, вероятно, сломает ваш код.

0 голосов
/ 09 января 2020

Во время работы он обязательно потребляет ресурсы обработки на вашем компьютере (он будет читать таблицу, удаляет / вставляет строки в нижней части таблицы, чтобы переместить их вверх, он будет генерировать повтор, он будет генерировать отмену).

см. Сообщение Asktom

Предложение "вставить строки внизу таблицы", скорее всего, означает использование подсказки добавления

...