Sql-Server

為什麼當我將列從 DATETIME 更改為 DATE 時,我看不到任何儲存改進?

  • October 18, 2018

長話短說。我有一個包含超過 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;

引用自:https://dba.stackexchange.com/questions/220392