Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 增加SQL Server中表列的数值范围,而不使用ALTER table_Sql Server - Fatal编程技术网

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
——这适用于所有行—现有行和未来行。没办法。