1

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

-- 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”。现在我怀疑这是数据使用的实际空间。

4

2 回答 2

2

运行ALTER INDEX ALL On MyTable REBUILD,然后使用“true”标志再次检查空间

基本上,类型的更改以某种方式使存储碎片化:例如,它现在可以为 NULL 并且之前不会影响磁盘结构。我选择这个例子是因为你没有在你的 ALTER TABLE 中指定 NULL/NOT NULL

于 2011-06-09T07:01:31.757 回答
0

使用 sp_spaceused,您可以获得有关表使用的空间的更多信息。

EXEC sp_spaceused @objname = N'dbo.MyTable' ,@updateusage = N'TRUE';
于 2011-06-09T06:58:38.370 回答