2009-06-05 4 views
3

Ich versuche im Grunde, Daten aus einer Tabelle in einer Datenbank in SQL Server 2005 zu einer anderen Tabelle mit der gleichen Struktur (aber viele Indizes) in einer anderen Datenbank in der gleichen SQL Server-Instanz zu kopieren.Was ist der schnellste Weg, um viele Daten von einer Tabelle in eine andere einzufügen? (SQL Server 2005)

Mein aktueller Ansatz ist die offensichtliche INSERT/SELECT:

set identity_insert TargetDBName.dbo.TableName on 

insert into TargetDBName.dbo.TableName ([FieldsList]) 
    select [FieldsList] from TargetDBName.dbo.TableName  

set identity_insert SourceDBName.dbo.TableName off 

Welche, etwa, für immer (1 Stunde für 10 Millionen Platten dauert, während es 20 Minuten dauerte es aus der Tabelle des mit Indizes zu tun eins ohne sie).

Was ist der beste Weg, dies zu tun?

Danke!

Antwort

4

Ich glaube, Ihre Indizes werden bei jeder Einfügung neu berechnet, Sie sollten versuchen, die Indizes zu deaktivieren, Massen einfügen und dann wieder aktivieren. Prüfen Sie, ob das funktioniert

----Disable Index 
ALTER INDEX [*INDEX_NAME*] ON *TABLE_NAME* DISABLE 
GO 
----Enable Index 
ALTER INDEX [*INDEX_NAME*] ON *TABLE_NAME* REBUILD 
GO 
+0

wünschen kann zu formatieren, dass ein bisschen besser, nicht wahr jetzt wird alles über dem zweiten "ALTER INDEX" auskommentiert. –

+0

Ich stimme zu ... Deaktivieren oder Löschen/Hinzufügen der Indizes zu Ihrem Ziel während des Ladens. – Zachary