Sql-Server
為什麼當我將列從 DATETIME 更改為 DATE 時,我看不到任何儲存改進?
長話短說。我有一個包含超過 1000 萬行的表,其中包含一個日期時間欄位。我們可以將其更改為 DATE(因為日期使用 3 個字節,日期時間為 8)。
我想如果我:
alter table table1 alter column column1 date
我會回收超過一半的分配空間。
但是做一些測試,我看不到任何空間被回收。
exec sp_spaceused datas2 datas 110000 8136 KB 8080 KB 8 KB 48 KB --with datetime datas 110000 8136 KB 8080 KB 8 KB 48 KB --with date
兩者都有 8080KB。
但是如果我創建一個新表,具有相同數量的數據,但從一開始就使用 DATE,我可以看到一個很好的儲存改進:
datas2 110000 4744 KB 4688 KB 8 KB 48 KB
現在我的表有 4688 KB。
如何回收從日期時間更改為日期的表上的空間?
在某些情況下,您將需要重建索引和/或聚集索引以觀察任何空間釋放情況。
如果這是一個堆,你可以說:
ALTER TABLE dbo.MyHeap REBUILD;