我有一个用SQL编写的表,如下所示
PersonDetails
{
ID, // identity column
Age int,
FirstName varchar,
LastName varchar,
CreatedDateTime DateTime,
}
这个表目前大约有1亿行,我需要将数据增加到大约10亿行,以测试在这个表上创建一些索引所需的时间. 我可以使用同一个表中的数据一次又一次地插入行. 实现这一目标的最快方法是什么?
我在SQL中创建了一个简单的WHILE循环,如下所示
Declare @maxrows bigint = 900000000,
@currentrows bigint,
@batchsize bigint = 10000000;
select @currentrows = count(*) from [dbo].[PersonDetails] with(nolock)
while @currentrows < @maxrows
begin
insert into [dbo].[PersonDetails]
select top(@batchsize)
[Age]
,[FirstName]
,[LastName]
,[CreatedDateTime]
from [dbo].[PersonDetails]
select @currentrows = count(*) from [dbo].[PersonDetails] with(nolock)
end
但问题是,此查询在插入一些数据后显示以下错误. The transaction log for database 'DBNAME' is full due to 'LOG_BACKUP'.个
我可以在每个插入中添加一些延迟,或者减少批大小.
在这里前进的最好方式是什么?