sql – 在一个巨大的表格中更改列类型
我在SQL Server 2008 R2中有一个表,接近十亿行.我想要将数据类型从int更改为bigint.两次ALTER TABLE zzz ALTER COLUMN yyy的作品,但它非常慢.我如何加快处理速度?我正在考虑将数据复制到另一个表,删除,创建,复制和切换到简单的恢复模式,或者以某种方式使用光标1000行一次,但我不知道这些是否会实际上导致任何改进.
解决方法根据您所做的更改,有时候维护窗口更容易.在那个窗口中(没有人可以更改表中的数据),您可以:>删除指向旧列的任何索引/约束,并禁用触发器 这里的关键是它允许您在步骤3中逐步执行更新,这在单个ALTER TABLE命令中无法执行. 这假设列在数据完整性方面不起主要作用 – 如果它涉及一系列外键关系,则还有更多的步骤. 编辑 此外,只是想大声的问候,我还没有做过任何测试(但将其添加到列表中).我不知道页面行压缩是否会在这里有所帮助?如果将INT更改为BIGINT,使用压缩就绪SQL Server应该仍然将所有值视为仍然适合于INT.再次,我还没有测试这是否会改变更快或更慢,或者首先添加压缩需要多长时间.只要把它扔在那里 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |