4

我想知道修改 SQL Server 十进制列有什么影响。

例如,我有Decimal(12,2)列,我想将其更改为Decimal(13,3)

事实:

问题1:如果我有超过1000万或更多的行,它会如何反应?

问题 2:升级精度+规模是否会花费大量时间,还是会瞬间完成(我说的是正在应用的更改的性能)?

我实际上在小桌子上试过,它似乎是瞬间的,但我想在一张大桌子上做之前确定。

4

2 回答 2

4

The binary representation is different so it needs to perform a logged update to each row.

SELECT CAST(CAST(1 AS Decimal(12,2)) AS VARBINARY), 
       CAST(CAST(1 AS Decimal(13,3)) AS VARBINARY)

Returns

0x0C02000164000000
0x0D030001E8030000
于 2013-08-28T09:11:19.033 回答
2

这当然不会是瞬间的。我刚刚在我的测试数据库中尝试了一个包含 1.75 亿行数据的表。该查询在过去 10 分钟内一直在运行,并且仍在进行中。

此外,如果此列上有任何索引,您将不得不删除并重新创建这些索引,这将增加所需的总时间。

拉吉

于 2013-08-28T08:29:51.557 回答