SQL Server:更改列类型时,表的数据大小是原来的两倍



我将中的列类型更改为实际较小的类型:

-- 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';

相关内容

  • 没有找到相关文章

最新更新