我有1条000 000记录的表:如何将表格复制到另一个表格?
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
));
我需要更换现场
[id] [int] IDENTITY(1,1)
与
[id] [bigint] IDENTITY(1,1)
但是,所有数据(包括ID值)应为复制到新表和id应该是IDENTITY但bigint。
我创建新表
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
));
,并试图复制数据:
insert into x2_new(session_id,node_id,id)
select session_id,node_id,id from x2;
但它是缓慢的。如何更快地将数据复制到新表中?
定义慢吗?在被索引的表上插入一百万条记录的速度不会像没有编入索引的表那样快,当然 – scsimon
是的,但另一方面,这个查询从t选择到t1比插入()select ...来自。但我不能使用它,因为身份字段 – Oleg
一个更快的方法是放弃约束和索引,并简单地改变表列的类型。 – scsimon