Ich habe eine Tabelle mit 1 000 000 Datensätze:Wie kopiert man die Tabelle in eine andere Tabelle?
CREATE TABLE [dbo].[x2](
[session_id] [uniqueidentifier] NOT NULL,
[node_id] [uniqueidentifier] NOT NULL,
[id] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_x2] PRIMARY KEY CLUSTERED
(
[id] ASC
));
Ich brauche das Feld sollte
[id] [int] IDENTITY(1,1)
mit
[id] [bigint] IDENTITY(1,1)
Aber alle Daten (einschließlich ID-Werte) zu ersetzen sein kopiert in die neue Tabelle und ID sollte IDENTITY aber Bigint sein.
Ich habe die neue Tabelle erstellt
CREATE TABLE [dbo].[x2_new](
[session_id] [uniqueidentifier] NOT NULL,
[node_id] [uniqueidentifier] NOT NULL,
[id] [bigint] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_x2_new] PRIMARY KEY CLUSTERED
(
[id] ASC
));
und versucht, Daten zu kopieren:
insert into x2_new(session_id,node_id,id)
select session_id,node_id,id from x2;
Aber es ist langsam. Wie kopiert man Daten schneller in die neue Tabelle?
Definieren Sie langsam? Das Einfügen einer Million Datensätze in eine Tabelle, die indiziert wird, wird nicht so schnell sein wie eine, die nicht indiziert ist, natürlich – scsimon
ja, aber auf der anderen Seite ist diese Abfrage in t1 aus t auswählen schneller als Einfügen in() select ... von. Aber ich kann es wegen Identitätsfeld nicht verwenden – Oleg
Nun wäre ein schneller Weg, die Einschränkungen und Indizes fallen zu lassen und einfach den Typ der Tabellenspalte zu ändern. – scsimon