我将列的类型更改为实际的较小类型:
-- change type from nvarchar(100) to varchar(50)
Alter Table [MyTable] Alter column [MyColumn] varchar(50)
该表包含4 Mio.记录。在使用大约1.1 GB的空间之前,在更改列之后,它使用2.2 GB的空间。对此有任何解释吗?
我通过SMO或通过查看sql server management studio中的表属性找到它所使用的空间:“MyTable - > Properties - > Storage - > Data space”。现在我怀疑这是数据使用的实际空间。
答案 0 :(得分:2)
运行ALTER INDEX ALL On MyTable REBUILD
,然后再次使用“true”标志
基本上,类型的更改以某种方式存在碎片存储:例如,它现在是NULLable,并且之前不会影响磁盘上的结构。我选择了这个例子,因为你没有在ALTER TABLE中指定NULL / NOT NULL
答案 1 :(得分:0)
使用sp_spaceused,您可以获得有关表格使用空间的更多信息。
EXEC sp_spaceused @objname = N'dbo.MyTable' ,@updateusage = N'TRUE';