0

すべての既存の行の値が 1 で、すべての新しい行の値がデフォルトで 0 になるような列を追加する必要があります

簡単に、スクリプトを作成しました

ALTER TABLE Table ADD Column1 BIT NOT NULL DEFAULT 0
GO

UPDATE Table SET Column = 1
GO

更新クエリは、400K 行のデータセットで 10 分以上かかります。ここでオーバーヘッドはどこにありますか?

デフォルトが 1 になるように列を追加してから、10 秒未満の計算でデフォルトを 0 に変更できると思います (次のテスト フェーズでスクリプトを変更する可能性があります)。

4

1 に答える 1

0

まず"Print"、ステートメントの間に2つのタイムスタンプを使用して配置し、どちらがオーバーヘッドを持っているかを確認します。問題を解決するには、まず問題の原因を知る必要があります。私の経験が言うように、それは完了するのに時間がかかる列を追加しています。

次に、テーブルに約400Kのレコードが格納されている場合、もちろん、新しい列を追加すると、IOのコストが非常に高くなります。ですから、あなたがあなたの必要性について私に知らせてくれれば、私はより良い解決策を考えます。列の追加と削除、テーブルの変更などは、ブルームーンで1回行われるため、通常の操作などは行わないでください。それは単に正しくありません。

結局のところ、列を追加して10秒以内に値を更新したいのは理解していますが、それは他の多くのものに依存し、コード(非常に単純なので)もその1つです。ですから、コードよりもアイデアについてもっと考えるべきだと思います。

それが役に立てば幸い。

乾杯

于 2012-11-10T22:04:31.873 に答える