在SQL Server 2008中,我有一个包含大约300万条记录的表。我想将其中一个列的类型从float更改为int。但似乎需要花费很多时间。有没有办法快速实现这一目标?
答案 0 :(得分:2)
删除该表的所有约束,索引和触发器,它们也会降低更新速度。
答案 1 :(得分:2)
向表中添加新的int列,将新列更新为旧列的值,删除旧列,重命名新列。
我的直觉是,这会更快,但我可能是错的!
我假设因为它现在是浮点数,所以它不会用在任何索引中。
答案 2 :(得分:1)
您可以尝试创建新表并制作小光标,以便将数据从一个表发送到另一个表 桌子较小的部分。
如果你的桌子上有日期,你可以将你的数据移动一年,所以你可以 让我们在查询之间呼吸。
答案 3 :(得分:0)
这里发生的事情很可能是SSMS正在使用旧架构创建一个临时表,并将所有行复制到此表。然后,它使用新架构创建一个新表,并从旧表中复制回来的行。我认为SSMS中没有任何内容可以设置更改此内容,这可能是进行此特定架构更改的唯一方法。
兰迪
答案 4 :(得分:0)
ALter表通常比使用SSMS更快。 HOwever在这种情况下,我同意doogstar,因为你必须将所有数据转换为int,我创建一个新列填充它(你可以分批进行以提高性能并避免表锁)然后放弃旧的列并重命名新的。