在SQL Server中更改列数据类型的最快方法

时间:2010-01-12 12:04:00

标签: sql-server performance types

在SQL Server 2008中,我有一个包含大约300万条记录的表。我想将其中一个列的类型从float更改为int。但似乎需要花费很多时间。有没有办法快速实现这一目标?

5 个答案:

答案 0 :(得分:2)

删除该表的所有约束,索引和触发器,它们也会降低更新速度。

答案 1 :(得分:2)

向表中添加新的int列,将新列更新为旧列的值,删除旧列,重命名新列。

我的直觉是,这会更快,但我可能是错的!

我假设因为它现在是浮点数,所以它不会用在任何索引中。

答案 2 :(得分:1)

您可以尝试创建新表并制作小光标,以便将数据从一个表发送到另一个表 桌子较小的部分。

如果你的桌子上有日期,你可以将你的数据移动一年,所以你可以 让我们在查询之间呼吸。

答案 3 :(得分:0)

这里发生的事情很可能是SSMS正在使用旧架构创建一个临时表,并将所有行复制到此表。然后,它使用新架构创建一个新表,并从旧表中复制回来的行。我认为SSMS中没有任何内容可以设置更改此内容,这可能是进行此特定架构更改的唯一方法。

兰迪

答案 4 :(得分:0)

ALter表通常比使用SSMS更快。 HOwever在这种情况下,我同意doogstar,因为你必须将所有数据转换为int,我创建一个新列填充它(你可以分批进行以提高性能并避免表锁)然后放弃旧的列并重命名新的。