在午夜,我通过在存储过程中执行此操作来归档 SQL Server 2008 表:
INSERT INTO archive(col1, col2....)
select col1, col2...
from tablename
where date <= @endDate
delete from tablename where date <= @enddate
这是表模式。我显然已经更改了列名。存档表的结构完全相同。
[col1] [uniqueidentifier] NOT NULL,
[col1] [bigint] NOT NULL,
[col1] [nvarchar](255) NOT NULL,
[col1] [nvarchar](255) NOT NULL,
[col1] [datetime] NOT NULL,
[col1] [nvarchar](75) NULL,
[col1] [nvarchar](255) NULL,
[col1] [nvarchar](255) NULL,
[col1] [nvarchar](255) NULL,
[col1] [nvarchar](255) NULL,
[col1] [nvarchar](50) NULL,
[col1] [nvarchar](50) NULL,
[col1] [nvarchar](1000) NULL,
[col1] [nvarchar](2) NULL,
[col1] [nvarchar](255) NULL,
[col1] [nvarchar](255) NULL,
该表通常有大约 100,000 - 150,0000 行和多个索引,并且在我尝试执行此归档时仍然有信息写入其中。
此过程最快需要 6 分钟,最慢需要 13 分钟。
有没有更快的方法来做到这一点?