Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 执行INSERT INTO SELECT FROM语句的最快方法是什么?_Sql_Tsql - Fatal编程技术网

Sql 执行INSERT INTO SELECT FROM语句的最快方法是什么?

Sql 执行INSERT INTO SELECT FROM语句的最快方法是什么?,sql,tsql,Sql,Tsql,当视图中仅存在数千万条记录时,以下代码的性能非常差: INSERT INTO dbo.SomeTable SELECT Field1, Field2, Field3 FROM dbo.SomeView 如何修改代码以使插入大量数据的速度更快(忽略视图的性能)?IE:有没有什么提示我可以使用,比如NOLOCK?在执行这个命令之前,我应该执行一些其他的工作吗? < P>你可以给我们看一份执行计划,但是如果没有,你可以考虑以下任何一个: 是否可以包含where子句来限制select 是否有其他在后

当视图中仅存在数千万条记录时,以下代码的性能非常差:

INSERT INTO dbo.SomeTable
SELECT Field1, Field2, Field3
FROM dbo.SomeView

如何修改代码以使插入大量数据的速度更快(忽略视图的性能)?IE:有没有什么提示我可以使用,比如NOLOCK?在执行这个命令之前,我应该执行一些其他的工作吗?

< P>你可以给我们看一份执行计划,但是如果没有,你可以考虑以下任何一个:

  • 是否可以包含where子句来限制select
  • 是否有其他在后台运行的查询可能导致某些阻塞
  • 在添加所有记录之前,您可以删除增益表上的索引,然后再添加回去。这样您就不会同时写入记录和索引

是插入还是选择需要时间?插入。我已经更新了这个问题。我使用过不同的SQL语言,但从未见过这种插入。它总是类似于“插入tblname(column1,column2,…)值(val1,val2,…”)。例如,请参阅或NOLOCK不是一种性能增强机制。@LoekBergman它是有效的SQL语法,至少对MS SQL Server是如此。我不确定它背后的技术细节,但SQL Server会记住表中列的顺序。它将val1插入col1,val2插入col2,等等。从技术上讲,您甚至不需要指定select列,或者我的意思是,您可以通过选择all(如INSERT into table1)来简化它,从table1中选择backup select*就可以了。您甚至可以在表1中插入备份选择*,从表1中获取日期()