2012-12-18 92 views
0

我在存储过程中有一个临时表导致查询超时,因为它正在做一个复杂的计算。我想在使用它之后放弃它。它像存储过程临时表导致超时错误

DECLARE @SecondTable TABLE 

创造了现在,我可以使用

drop @SecondTable 

其实我不得不使用

drop #SecondTable 

是否有人知道为什么不降呢?

回答

3

我决不是一个SQL大师,但为什么这个下降甚至是必要的?

如果它是一个表变量,一旦存储过程退出,它将不再存在。

我真的很惊讶,DROP #SecondTable不会错误在你身上;因为你在那里放置临时表;不是表变量。

编辑

所以根据您的意见,我更新如下:

1)如果你使用一个表变量(@SecondTable);那么不需要下降。 SQL Server将为您处理此问题。

2.)听起来你的超时是由使用表的计算引起的,而不是表本身的丢失。在这种情况下;我可能会推荐使用临时表而不是表变量;因为临时表会让你添加索引等来提高性能;而一个表变量不会。如果这还不够,您可能需要增加查询的超时时间。

3.)在SQL中;一个表变量(@SecondTable)和临时表(#SecondTable)是两个完全不同的东西。我会参考Table VariablesTemporary Tables

+0

的MSDN文档,它会在存储过程之后被删除。然而,在商店proc本身多次使用临时表导致超时。我的问题与Drop #SecondTable和Drop @SecondTable的区别是什么?我没有得到你正在做什么的临时变量.. – hussian