Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Server插入超时_Sql_Sql Server 2008 - Fatal编程技术网

Sql Server插入超时

Sql Server插入超时,sql,sql-server-2008,Sql,Sql Server 2008,在SQLServer2008中,我试图将多行插入到一个简单的表中。该表除了主键之外没有任何索引 我做的插入如下 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() 如果我对大量行(比如

在SQLServer2008中,我试图将多行插入到一个简单的表中。该表除了主键之外没有任何索引

我做的插入如下

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行)执行此操作并多次运行该操作, 插入操作开始花费大量时间


有没有办法进一步优化插件

确保经常提交。
这将减少回滚段的使用。

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

可能是编译时,而不是执行时

insert into TestTable (Col1,Col2, Col3,Col4, Col5)
VALUES (1,1,1,1,GETDATE()), (1,1,1,1,GETDATE()), (1,1,1,1,GETDATE()), ...
如果有400行完全相同,则首先生成400行


你想实现什么?运行400个联盟肯定会让它变慢——尽管我不确定“巨大”的时间意味着什么。这不是向表中插入400条记录的正确方法。对不起,我意识到我的问题不太准确-我实际上没有尝试插入相同的行。
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