У меня есть таблица "А" с 40 столбцами. Мне нужно скопировать данные из 20 определенных столбцов из «A» в другую таблицу «B», имеющую эти 20 столбцов. Будет около 3-10 миллионов записей. Что будет наиболее эффективным способом сделать это в PLSQL.
Скопируйте данные из таблицы и загрузите их в другую таблицу
Ответы (2)
"Ежедневная таблица B будет усечена, и в нее будут вставлены новые данные из A."
Итак, самый эффективный способ сделать это — не делать этого. Вместо этого используйте материализованное представление; журнал материализованного представления в таблице A позволит вам фиксировать добавочные изменения и применять их ежедневно или в любом другом удобном для вас окне. Подробнее.
По сравнению с этим подходом использование ручного PL/SQL или даже чистого SQL смехотворно неэффективно.
Нужно ли вам выполнять какое-либо преобразование данных или вы просто копируете данные прямо из одной таблицы в другую?
Самый простой способ сделать это, хотя вам придется создавать индексы отдельно.
create table B as (select A.c1, A.c2, A.c3..... from A);
Если таблица x уже существует, вы можете просто сделать
insert into B select A.c1, A.c2.... from A
Чтобы ускорить это, вы могли бы удалить все индексы в таблице x до тех пор, пока не будет выполнена вставка.
insert into ... select ...
? - person Alex Poole   schedule 09.07.2013B
, вы также можете рассмотреть материализованное представление, чтобы упростить повторную загрузку. - person Alex Poole   schedule 09.07.2013