我在存储过程中有一个临时表,它会导致查询超时,因为它正在进行复杂的计算。我想在它使用后丢弃它。它被创建为
DECLARE @SecondTable TABLE
现在我不能使用
删除它drop @SecondTable
实际上我必须使用
drop #SecondTable
有人知道为什么吗?
答案 0 :(得分:3)
我绝不是一个SQL大师,但为什么下降甚至是必要的?
如果它是一个表变量,一旦存储过程退出就不再存在。
我真的很惊讶DROP #SecondTable
不会对你造成错误;既然你在那里放了一张临时桌子;不是表变量。
修改强>
因此,根据您的评论,我的更新如下:
1。)如果您正在使用表变量(@SecondTable
);那么就不需要掉线了。 SQL Server将为您解决此问题。
2。)听起来你的超时是由使用表的计算引起的,而不是表本身的丢弃。在这种情况下;我可能建议使用临时表而不是表变量;因为临时表将允许您添加索引等以提高性能;虽然表变量不会。如果这还不够;您可能需要增加查询的超时持续时间。
3.)在SQL中;表变量(@SecondTable
)和临时表(#SecondTable
)是两个完全不同的东西。我将参考Table Variables和Temporary Tables