真夜中に、ストアド プロシージャで次のようにして、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,000 行があり、このアーカイブを実行しようとしている間、まだ情報が書き込まれています。
このプロセスには、最速で 6 分、最短で 13 分かかります。
これを行うより速い方法はありますか?