2013-07-09 52 views
0

我有一個有40列的表'A'。我需要將來自'A'的20個特定列的數據複製到具有這20列的另一個表'B'。將會有大約3千萬條記錄。 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); 

如果表X已經存在,你可能只是做一個

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

加快這,你想砸桌子X的所有索引,直到插入已完成。

+0

不,沒有對涉及的數據進行排序,只需要將數據複製到B.每日表'B'將被截斷並且新數據將被添加。 那麼哪種方法最有效1)插入B select OR 2)BULK COLLECT –

+0

我還沒有做過性能測試。這是一次性工作嗎? –

+0

我試着用INSERT INTO,但是如果我必須在插入每50000行之後做一次提交,我將不得不做些什麼? –

相關問題