0
我在存储过程中有一个临时表导致查询超时,因为它正在做一个复杂的计算。我想在使用它之后放弃它。它像存储过程临时表导致超时错误
DECLARE @SecondTable TABLE
创造了现在,我可以使用
drop @SecondTable
其实我不得不使用
drop #SecondTable
是否有人知道为什么不降呢?
我在存储过程中有一个临时表导致查询超时,因为它正在做一个复杂的计算。我想在使用它之后放弃它。它像存储过程临时表导致超时错误
DECLARE @SecondTable TABLE
创造了现在,我可以使用
drop @SecondTable
其实我不得不使用
drop #SecondTable
是否有人知道为什么不降呢?
我决不是一个SQL大师,但为什么这个下降甚至是必要的?
如果它是一个表变量,一旦存储过程退出,它将不再存在。
我真的很惊讶,DROP #SecondTable
不会错误在你身上;因为你在那里放置临时表;不是表变量。
编辑
所以根据您的意见,我更新如下:
1)如果你使用一个表变量(@SecondTable
);那么不需要下降。 SQL Server将为您处理此问题。
2.)听起来你的超时是由使用表的计算引起的,而不是表本身的丢失。在这种情况下;我可能会推荐使用临时表而不是表变量;因为临时表会让你添加索引等来提高性能;而一个表变量不会。如果这还不够,您可能需要增加查询的超时时间。
3.)在SQL中;一个表变量(@SecondTable
)和临时表(#SecondTable
)是两个完全不同的东西。我会参考Table Variables和Temporary Tables
的MSDN文档,它会在存储过程之后被删除。然而,在商店proc本身多次使用临时表导致超时。我的问题与Drop #SecondTable和Drop @SecondTable的区别是什么?我没有得到你正在做什么的临时变量.. – hussian