Sql server 增加SQL Server中表列的数值范围,而不使用ALTER table
我有一个名为Sql server 增加SQL Server中表列的数值范围,而不使用ALTER table,sql-server,Sql Server,我有一个名为Range的表,其中包含一列minu值,数据类型为int。我需要将long值保存到该列更改表为现有数据分配更多空间。那太没效率了。基本上,我需要的是更多的空间,以便在将来添加条目。不适用于现有数据。您最好只使用altertable并将列数据类型更改为BIGINT 如果您担心占用8个字节的值可能会消耗更少的字节,那么如果在Enterprise Edition上,您可以启用行压缩,因为这是解决的一个问题 另一种方法是添加一个新的可为null的BIGINT列min\u value2。您可以
Range
的表,其中包含一列minu值
,数据类型为int
。我需要将long值保存到该列<代码>更改表为现有数据分配更多空间。那太没效率了。基本上,我需要的是更多的空间,以便在将来添加条目。不适用于现有数据。您最好只使用altertable
并将列数据类型更改为BIGINT
如果您担心占用8个字节的值可能会消耗更少的字节,那么如果在Enterprise Edition上,您可以启用行压缩,因为这是解决的一个问题
另一种方法是添加一个新的可为null的BIGINT列min\u value2
。您可以使用一个检查约束,确保只有一列具有值,并且使用ISNULL(min_value2,min_value)的非持久化计算列具有值。最初这将是相当便宜的,因为它只是元数据,但随着时间的推移,它将更加昂贵,因为新行和更新行最终将占用两列的空间
另一种选择是使用BIGINT创建一个新表,然后简单地将其用于需要它的行。你可以有一种观点,认为联合会将它们结合在一起。但这会增加复杂性,并可能降低查询执行计划的效率。现有数据不能有一种数据类型,未来数据不能有另一种更大的数据类型。如果
int
不够大,则需要使用ALTER TABLE
将该列的数据类型更改为BIGINT
——这适用于所有行—现有行和未来行。没办法。