0

SQL Server 2005: 2 億 4000 万行のテーブル。列の要件が NOT NULL から NULL に変更されました。

このような大きなテーブルを処理するときに ALTER ステートメントを使用することは、一般的に悪い習慣です (多くの場合、不可能です) が、可能であれば、テーブルの再構築を回避しようとします。

2,000 万行を含む dev テーブルに対して ALTER ステートメントをテストしたところ、ステートメントは 1 秒未満で正常に実行されました。

質問: これは巨大な生産テーブルに対して機能するように見えます... しかし、経験に基づいてリスクや影響を指摘できる人はいますか?

どうもありがとう。

4

3 に答える 3

2

既存のデータをチェック/変更する必要がないため、NOT NULL から NULL への変更は問題ありません。ただし、他の方向では、既存のすべてのデータをチェックする必要があります。それで問題になるかもしれません。

NULL 値の可能性の結果として、既存のクエリ (列がまだ NOT NULL のときに作成された) が「破損」しない可能性に注意することをお勧めします。問題は、明らかなエラーが発生する可能性が低いため、すべてのケースでロジックが適切であることを確認するのが難しい場合があることです。

集計関数に注意してください。

于 2009-12-09T14:44:42.687 に答える
1

NOTNULLからNULLに移行しても問題はありません。私は以前にこれを行ったことがあり、問題はありませんでした。

問題になる可能性があるのは、テーブル全体のロックを取得することだけです。

于 2009-12-09T11:57:49.223 に答える
1

大きなテーブルで自分でこれを行うのに問題はありませんでした。

たとえば、データ型を変更したり、列のサイズを短くしたりする場合は、より多くの作業が必要になります。しかし、NOT NULL から NULL への変更については、タスクに負担がかかりすぎることはありません。

ただし、標準的なアプローチとして、静かな期間中に更新をスケジュールします。

于 2009-12-09T11:40:18.473 に答える