[英]Adding extra column to existing Table in SQL with more than 6 million records
[英]Adding an autonumber to a SQLcolumn which has more than 15 million records
我需要在现有表中添加一个自动编号列,该表在SQL 2005中大约有1500万条记录。
您认为这需要多少时间? 有什么更好的方法呢?
为了最大程度地减少影响,我将创建一个新表,其中添加了identity列,通过从旧表中进行选择将其插入新表,然后删除旧表并重命名新表。 我将在下面给出基本概述。 可能需要额外的步骤来处理外键等。
create table NewTable (
NewID int identity(1,1),
Column1 ...
)
go
insert into NewTable
(Column1, ...)
select Column1, ...
from OldTable
go
drop table OldTable
go
exec sp_rename 'NewTable', 'OldTable'
go
很难说要花多长时间。
在我看来,最好的选择是带回生产数据库的副本,在开发环境中还原它,然后在此处进行更改以查看需要多长时间。
从那里,您可以协调站点的停机时间,或安排在用户未连接时运行更新。
除非紧急情况:
要找出所需的停机时间,请还原到新的数据库并在那里进行更改。
不应太长:它不仅取决于行数,而且还取决于每行中有多少数据。 (SQL Server将复制整个表。)
您是否可以选择备份生产数据库,将更改应用到另一台服务器上以及更改连接字符串? 您甚至可以将它与原始服务器还原在同一服务器上,更改连接字符串并摆脱旧数据库。
如果磁盘空间有限,可能不可行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.