0

Oracle データベースに数百万行のテーブルがいくつかあります。これらのテーブルの 1 つを変更して新しい列を追加するときは、デフォルトを指定します。Oracle はすべての既存の行をデフォルトで更新する必要があるため、これは実行が非常に遅くなります。解決策は、列が NOT NULL として定義されていることを確認することです。これは、Oracle (最近のバージョンのみ) がすべての既存の行をデフォルトで更新しないためです。その後、これらの列のいずれかに NULL が存在すると、デフォルトが必要であることが Oracle に通知されます。その場でデフォルトを提供します。

私の質問は SQL Server に関するものです。列を追加してデフォルトを指定すると、同様の動作を示しますか? そうでない場合、デフォルト値を持つ新しい列を効率的に追加するためのベスト プラクティスはありますか? また、列を NOT NULL として定義する利点はありますか?

4

1 に答える 1

0

SQL Server 2012より前は、デフォルトなしでNULL可能列を追加することは非常に広範でしたが、すべての行を更新する必要があるため、DEFAULT制約の追加は遅くなりました。SQL Server 2012のDEFAULTの追加も高速であるため、可能な場合はメタデータのみの操作です。

于 2012-09-24T15:45:05.063 に答える