将float列转换为bigint列会导致SQL Server中的整个表副本吗?

我们想在一个巨大的(100 Mio.行)SQL Server表中将一列从FLOAT(8)转换为BIGINT。我们不关心浮点和丢失精度。 由于我没有SQL Server但在本地使用mysql,我想知道这个操作是否会产生整个表副本,就像它对我的数据库一样!另一方面,我读到这将是一个隐式转换,因此它只需几秒而不是几小时。 我没有设置SQL Server并在本地再现它可能需要花费很多时间我想问你答案是否是一个简单的“是的,它会做一个表副本”,或者“浮动8到bigint,不是它不是问题”。 谢谢你的帮助!     
已邀请:
它似乎是这样做的。
CREATE TABLE T
(
c float,
d int,
v varchar(10)
)

INSERT INTO T VALUES (1,1,'')


alter table T alter column c bigint

SELECT  sc.name, sipc.leaf_offset, sipc.max_inrow_length
FROM    sys.partitions sp
        JOIN sys.system_internals_partition_columns sipc
             ON sp.partition_id = sipc.partition_id
     left   JOIN sys.columns sc
             ON sc.column_id = sipc.partition_column_id AND sc.object_id = sp.object_id
WHERE   sp.object_id = OBJECT_ID('dbo.T') 

DROP TABLE T
返回
name leaf_offset max_inrow_length
---- ----------- ----------------
NULL 4           8
d    12          4
v    -1          10
c    4           8
旧的
float
列仍然可见,但
bigint
列刚刚接过插槽。它需要更新每个记录,但要进行此更改。     

要回复问题请先登录注册