2014-02-14 56 views
0

我有一個帶有列的SQL Server表,我們稱它們爲A和B.我已經創建了一個具有類型列和單值列的新表。我想將現有表中的所有行(有5000萬)複製到新表中,這樣第一個表中的每行都有第二行(一個用於值A,一個用於值B)。我有一個簡單的腳本,將這樣做在表格間批量複製的最快方法

insert into NewTable (ResultTypeId, Value) 
(select @typeA, valueOfA from OldTable 
union all 
select @typeB, valueOfB from OldTable) 

這種天真的做法大約需要8分鐘。有沒有更快的方法來做到這一點?

+1

你可以使用SSIS嗎?這會將您的插入分割爲更易於管理的塊,因此您的整個插入沒有單個事務。您還可以在插入過程中管理是否檢查約束,禁用此功能(只要您知道您的數據沒有違反它們)也會加快插入速度。 – GarethD

+0

是的,SSIS可以讓你做並行加載。如果服務器有CPU和RAM的話,方便。就我個人而言,我認爲SSIS具有很大的學習曲線,並增加了額外的維護/便攜性麻煩,所以我很少使用它。 SP或死亡是我的一般規則...... –

回答

相關問題