Sql-Server
刪除固定長度的列以釋放空間是否明智?
我在 SQL Server 2005 中有一個巨大的表。(表大約 40gb)我正在尋找最安全、最輕鬆的方法來釋放空間或延遲其增長。
該表具有三個固定長度 (
char(10)
) 列,它們 a) 完全不需要,b) 幾乎完全填充NULL
。如果我刪除這些列,SQL Server 會在導入新記錄時開始使用數據文件中的釋放空間嗎?或者由於分散在許多記錄上,它們的碎片性質(我假設)是否意味著 SQL Server 將出於性能原因忽略空間?
如果我刪除它們,我可以執行收縮數據庫來釋放空間嗎?
我是唯一使用這個數據庫的開發人員,我知道這些列對於需求來說是多餘的。15 年前,當不同的懶惰開發人員創建此數據庫時,它們與其他列一起添加到平面文件中。
- 如果您重建索引或執行 DBCC CLEANTABLE,刪除它們將回收空間
- 新行將沒有這些列
- 無論是否為 NULL,固定長度列始終保留空間(注意:具有 NULL 的可變長度列通常不佔用空間)
- 不要收縮數據庫,它只會再次增長並有其他問題(超出範圍)
- 40GB不算大
注意:用於回收空間的索引重建假設您有一個聚集索引