Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 插入到表变量的速度很慢_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 插入到表变量的速度很慢

Sql 插入到表变量的速度很慢,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在存储过程中有一个动态sql,比如 @sql = 'SELECT a, b, c d FROM table t LEFT JOIN table2 t2 ON t.id = t2.id ' 然后插入一个表变量 Insert into @tblCustomer EXECUTE sp_executesql @sql insert语句的执行时间很长。我有什么办法可以改进它吗 我正在使用SQLServer2008

我在存储过程中有一个动态sql,比如

@sql = 'SELECT a, 
       b, 
       c d 
FROM   table t 
       LEFT JOIN table2 t2 
              ON t.id = t2.id '
然后插入一个表变量

Insert into @tblCustomer

EXECUTE sp_executesql @sql
insert语句的执行时间很长。我有什么办法可以改进它吗

我正在使用SQLServer2008

谢谢你,尽管你不能做太多(简单的sql查询)

尝试改用临时表

CREATE TABLE #TempTable(
 ID int,
 col2 <datatype>,
 col3 <datatype>)
CREATE TABLE#(
ID int,
col2,
col3)
并插入其中

看看它是否工作得更快。阅读更多关于它的信息


尝试为数据库编制索引。它应该会给您带来明显的性能提升。

似乎无法优化。问题是直截了当的。如果使用临时表,可能会由于内存使用而使进程更加缓慢

尝试以下查询:

@sql = SELECT a, b, c, d 
FROM table t (NOLOCK) LEFT JOIN table2 t2 (NOLOCK) ON t.id = t2.id

你的桌子太大了吗?你试过研究什么吗?你有索引吗?给我们看些东西。这只是一个例子还是你为什么要这样做?您可以执行一个静态SQL select语句,获取结果并将其插入表中。为什么这么复杂?你到底为什么要使用动态sql来实现这一点?如果可能的话,应该避免使用动态Sql。我认为Select into#TESTERABLE将是更快的选择