2013-03-28 80 views
0

我在存储过程像插入到表变量慢

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

动态SQL,然后插入变量

Insert into @tblCustomer 

EXECUTE sp_executesql @sql 

insert语句是需要长时间来执行的表。有什么办法可以改善它吗?

我使用SQL Server 2008

感谢

+0

做你的桌子太大? – developerCoder

+3

你尝试过研究任何东西吗?你有索引吗?向我们展示*东西*。 – Kermit

+0

这只是一个例子,或者你为什么这样做?有一个您执行的静态SQL select语句,获取结果并将其插入到表中。为什么这么复杂? – YvesR

回答

0

虽然你不能做太多(简单的SQL查询)。

尝试使用临时表,而不是

CREATE TABLE #TempTable(
ID int, 
col2 <datatype>, 
col3 <datatype>) 

,并插入到它

看看它是否工作得更快。阅读更多关于它here

尝试索引您的数据库。它应该会让你看到性能提升。

+0

我觉得选择#temptable会更快 –

-2

在我看来,它是不可能优化的。查询很简单。临时表(如果使用)可能会由于内存使用而减慢进程。

0

尝试以下查询:

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