実現したいこと・問題
約700万件のレコードをテーブルがあり、列を追加する作業をしております。
具体的にNotNull制約を持つ列を5列程追加するのですが。
単純にNotNull制約の列を追加するとエラーになるので、以下の手順で列追加を行っています。
1.NULL許可の列を追加
SQL
1ALTER TABLE T_URIAGE ADD COLUMN41 VARCHAR(1) NULL;
2.任意の値を登録
SQL
1UPDATE T_URIAGE SET COLUMN41 = '1';
3.NotNull制約へ変更
SQL
1ALTER TABLE T_URIAGE ALTER COLUMN COLUMN41 VARCHAR(1) NOT NULL;
実行時間は、1の手順に約1秒、2の手順に約20分、3の手順に約20分ほど掛かります。
この時、3の手順でNotNull制約を付けているだけなのに20分も時間がかかるのはなぜなのでしょうか?
また、上記の手順以外で列追加の実行時間を短縮する方法はあるのでしょうか?
補足情報
実行環境はSQL Server 2016です。
元となるテーブルは以下のようなレイアウトです。
SQL
1CREATE TABLE [dbo].[T_URIAGE]( 2 [COLUMN01] [varchar](10) NOT NULL, 3 [COLUMN02] [varchar](10) NULL, 4 ... 5 [COLUMN40] [varchar](10) NULL, 6 CONSTRAINT [T_URIAGE] PRIMARY KEY CLUSTERED 7 ( 8 [COLUMN01] ASC 9 ) 10)

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/27 12:13