我想知道修改SQL Server十进制列有什么影响。
例如,我有十进制(12,2)列,我想将其更改为十进制(13,3)
事实:
问题1:如果我的行数超过1000万或更多,它会如何反应?
问题2:是否需要花费大量时间来升级精度+音阶或是否会瞬间完成(我说的是所应用更改的效果)?
我实际上试过小桌子,它似乎是瞬间完成的,但我想确保在一张巨大的桌子上做之前。
答案 0 :(得分:3)
二进制表示不同,因此需要对每一行执行记录更新。
SELECT CAST(CAST(1 AS Decimal(12,2)) AS VARBINARY),
CAST(CAST(1 AS Decimal(13,3)) AS VARBINARY)
返回
0x0C02000164000000
0x0D030001E8030000
答案 1 :(得分:2)
当然不会是瞬间的。我刚刚在我的测试数据库中尝试了一个包含1.75亿行数据的表。该查询已在过去10分钟内运行,并且仍在进行中。
此外,如果此列上有任何索引,则必须删除并重新创建这些索引,这将增加所需的总时间。
拉吉