SQL Server - 增加小数精度/比例的性能

时间:2013-08-28 08:11:34

标签: sql sql-server performance sql-server-2008 sql-server-2008-r2

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

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

事实:

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

问题2:是否需要花费大量时间来升级精度+音阶或是否会瞬间完成(我说的是所应用更改的效果)?

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

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分钟内运行,并且仍在进行中。

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

拉​​吉