2013-07-09 4 views
0

У меня есть таблица «A», содержащая 40 столбцов. Мне нужно скопировать данные из 20 конкретных столбцов из «A», в другую таблицу «B», имеющую эти 20 столбцов. Там будет около 3 - 10 миллионов записей. Что будет самым эффективным способом сделать это в PLSQL.Скопируйте данные из таблицы и загрузите ее в другую таблицу

+1

Почему PL/SQL, почему не прямой SQL 'insert into ... select ...'? –

+1

Ваш выбор тегов подсказывает, что у вас уже есть ответ. Что вы ожидаете от нас? – APC

+0

Да, я реализовал его с помощью BULK COLLECT и FORALL. Я хотел бы знать, есть ли способ, который я могу настроить, чтобы повысить эффективность. –

ответ

1

"ежедневная таблица B будет усечена и новые данные будут вставлены в нее от A."

Хорошо, поэтому самый эффективный способ сделать это - не делать этого. Вместо этого используйте материализованное представление; материализованный просмотр журнала в таблице A позволит вам захватывать инкрементные изменения и применять их ежедневно или в любом другом окне, которое вам нравится. Find out more.

По сравнению с этим подходом с использованием ручного PL/SQL - или даже чистого SQL - смешно неэффективно.

0

Вам нужно сделать какие-либо преобразования по данным или просто скопировать данные прямо из одной таблицы в другую?

Самый простой способ сделать это, хотя вам придется создавать индексы отдельно.

create table B as (select A.c1, A.c2, A.c3..... from A); 

Если таблица х уже существует, вы просто могли бы сделать

insert into B select A.c1, A.c2.... from A 

Чтобы ускорить этот процесс, вы хотели бы, чтобы удалить все индексы в таблице х, пока пластина не было сделано.

+0

Нет, сортировка данных не требуется, просто нужно скопировать данные в B. Ежедневная таблица «B» будет усечена, и новые данные будут добавлены. Итак, какой будет наиболее эффективный способ 1) Вставить в B выбрать ИЛИ 2) BULK COLLECT –

+0

Я никогда не проводил тест производительности. Это одноразовая работа? –

+0

Я пытался с INSERT INTO, но что мне делать, если мне нужно сделать фиксацию после каждой вставленной 50000 строк? –

Смежные вопросы