0

我在存储过程中有一个临时表,它导致查询超时,因为它正在执行复杂的计算。我想在它使用后放下它。它的创建就像

DECLARE @SecondTable TABLE

现在我不能使用

drop @SecondTable

事实上我必须使用

drop #SecondTable

有人知道为什么吗?

4

1 回答 1

3

我绝不是 SQL 专家,但为什么需要 drop 呢?

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

我真的很惊讶DROP #SecondTable你没有出错。因为您要在那里放置一个临时表;不是表变量。

编辑

因此,根据您的评论,我的更新如下:

1.) 如果您使用的是表变量 ( @SecondTable);那么没有必要下降。SQL Server 会为您解决这个问题。

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

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

于 2012-12-18T17:36:46.893 回答