4

SQL Server 2008 のコンテキストで。

データ型の列からデータ型の同じテーブルTextの別の列への値の圧縮と移行に取り組んでいます。Image今のところ、Text 列は削除しません。そのため、その列のすべての値を NULL に設定しています。

NULL に設定すると、スペースがすぐに得られますか? つまり、データベースのサイズを縮小しますか?

列を削除すると、それが行われますか?

そうでない場合、その未使用スペースを要求するには、さらにどのようなことを行う必要がありますか?

4

3 に答える 3

1

テキスト列は、テーブルの単一行の列値に対して最小 16 文字の値を取ります。空き領域を要求するには、この列のすべての値を null に設定した後、データとインデックスを再編成します。

この領域を再利用するには、DBCC CLEANTABLE を使用するか、データベースを圧縮する必要があります。

構文: DBCC CLEANTABLE( データベース名, "テーブル名またはビュー名")

このリンクを参照して、テーブルの最適化と再インデックス化を行います

于 2012-05-07T15:21:53.177 に答える
1

データベースのサイズを実際に縮小するには、次のことを行う必要があります。

  • 列をドロップします
  • クラスター化インデックスがない場合は、クラスター化インデックスまたはテーブルを再構築します
  • データベース ファイルを圧縮する

断片化の原因となるため、縮小はお勧めしません。ただし、データベースのディスク フットプリントは自動的には減少しません。内部に空のスペースがあるデータベースが作成され、データベースをそれ以上大きくすることなく、より多くのデータ/インデックスで満たすことができます。

于 2012-05-07T15:30:12.597 に答える
0

値を NULL に設定しても違いはありません。列を削除しても、それだけではディスク領域が解放されません。また、インデックスを再構築する必要があります:ドロップされた列によって占有されるディスク容量

于 2012-05-07T12:50:41.933 に答える