Sql Server插入超时

时间:2011-04-27 01:49:57

标签: sql sql-server-2008

我正在尝试在Sql Server 2008中的一个简单表中插入多行。该表没有除主键之外的任何索引。

我正在进行如下插入

insert into TestTable 
(Col1,Col2, Col3,Col4, Col5)
select 1,1,1,1,GETDATE()
union all
select 1,2,3,1,GETDATE()
union all
select 1,5,2,1,GETDATE()
union all
select 1,4,15,1,GETDATE()

如果我为大量行(比如400)执行此操作并多次运行该操作, 插入操作开始花费大量时间。

有没有办法进一步优化刀片?

4 个答案:

答案 0 :(得分:2)

insert into TestTable (Col1,Col2, Col3,Col4, Col5)
VALUES (1,1,1,1,GETDATE()), (1,1,1,1,GETDATE()), (1,1,1,1,GETDATE()), ...

答案 1 :(得分:0)

确保您经常提交。 这应该会减少回滚段的使用。

答案 2 :(得分:0)

您可以尝试将数据分块。加载前100条记录,提交,然后重复。 400条记录不是很多。您通常可以一次插入数千条记录。所有插入都将写入日志以进行回滚。提交时会清除日志文件。

答案 3 :(得分:0)

这可能是编译时间,而不是执行时间。

如果您有400行完全相同,则生成400行 first

insert into TestTable 
   (Col1,Col2, Col3,Col4, Col5)
select
   1,1,1,1,GETDATE()
FROM
   (SELECT TOP 400 * FROM master.dbo.spt_values ORDER BY 1) foo