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