Что вы хотите сделать, это INSERT /*+ DIRECT */ INTO table2 SELECT ... FROM table1 WHERE ...
. Прямой намек заставит его делать прямую нагрузку на контейнеры ROS вместо WOS. Если вы делаете большие объемные нагрузки, это будет быстрее всего. Если вы делаете много небольших вставок/выбираете, как это, тогда было бы лучше использовать WOS и оставить DIRECT.
Другой возможностью было бы сделать CREATE TABLE table2 AS SELECT ... FROM table1 WHERE ...
.
Наконец, если вы действительно просто копируете все данные и не фильтруете (что я знаю, это не ваш вопрос, но я включаю это для полноты) ... и таблицы разделены, вы можете сделать COPY_PARTITONS_TO_TABLE
, который будет просто создавать ссылки из контейнеров ROS исходной таблицы в целевую таблицу. Любые изменения в новой таблице приведут к реорганизации контейнеров ROS (со временем, с использованием кортежа и т. Д. Контейнеры не будут очищены, если обе таблицы не реорганизовали их).
Спасибо @woot !!, я использую INSERT/* + DIRECT * /, но его производительность не так хороша, как команда копирования. Это займет больше времени, чтобы загрузить 1 миллион записей. – Biswabid
@Biswabid Вы используете последовательность? Проецируются ли сегменты одинаково между исходной и целевой таблицей? – woot
Да, у меня есть последовательность на месте. хотя я не уверен в прогнозах источника и цели. – Biswabid