我将列的类型更改为实际较小的类型:
-- 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”。现在我怀疑这就是数据实际使用的空间。
最佳答案
运行ALTER INDEX ALL On MyTable REBUILD
,然后使用“true”标志再次检查空间
基本上,类型的更改以某种方式导致存储碎片化:例如,它现在可以为 NULL,而以前则不会,这会影响磁盘上的结构。我选择这个示例是因为您没有在 ALTER TABLE 中指定 NULL/NOT NULL
关于sql-server-2008 - SQL Server : Double data size of a table when altering column type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6289016/