2012-05-07 19 views
4

在SQL Server中的我正在壓縮,並從柱Text數據類型與Image數據類型,相同的表值遷移到另一個上下文2008在SQL服務器中,是否將Text列的所有值設置爲NULL可減少數據庫大小?

。目前,我們不想刪除文本列。所以,我只是將該列的所有值設置爲NULL。

設置爲NULL是否提供空間增益?即減少數據庫大小?

是否丟棄列做到這一點?

如果不是,那麼需要額外的東西來聲稱未使用的空間?

+0

如果文本列被替換爲空(如果行號相同),則沒有區別。 –

+3

在SQL Server 2008的上下文中,你不應該**再使用'Text'和'Image'。這些類型已被棄用,並將在未來的版本中從SQL Server中刪除。改爲使用'VARCHAR(MAX)'和'VARBINARY(MAX)'。 –

回答

1

要真正減少數據庫的大小,您需要:

  • 刪除列
  • 重建聚簇索引或表如果沒有聚簇索引
  • 收縮數據庫文件

我不建議收縮,因爲它會導致分段。但是,數據庫的磁盤空間不會自動下降。你將擁有一個內部有空白空間的數據庫,它可以填充更多的數據/索引,而無需進一步擴展數據庫。

+0

但假設我共享主機限制爲100MB,由於有'TEXT'列,因此將其設置爲NULL,爲新插入騰出空間? – marquito

+0

@marquito是的,它應該。如果刪除數據,數據庫文件不會縮小,但不再分配這些頁面。 – JNK

1

文本列在表格的單行中爲列值取最小16個字符值。在此列中將所有值設置爲空之後,聲明可用空間重新組織數據和索引。

爲了回收這個空間,我們必須使用DBCC CLEANTABLE或縮小數據庫。

語法:DBCC CLEANTABLE(數據庫名稱, 「表名或VIEW_NAME」)

Refer this link to defrag and reindex the table

相關問題