我在存储过程中有一个临时表,它导致查询超时,因为它正在执行复杂的计算。我想在它使用后放下它。它的创建就像
DECLARE @SecondTable TABLE
现在我不能使用
drop @SecondTable
事实上我必须使用
drop #SecondTable
有人知道为什么吗?
我在存储过程中有一个临时表,它导致查询超时,因为它正在执行复杂的计算。我想在它使用后放下它。它的创建就像
DECLARE @SecondTable TABLE
现在我不能使用
drop @SecondTable
事实上我必须使用
drop #SecondTable
有人知道为什么吗?
我绝不是 SQL 专家,但为什么需要 drop 呢?
如果它是一个表变量,一旦存储过程退出,它将不再存在。
我真的很惊讶DROP #SecondTable
你没有出错。因为您要在那里放置一个临时表;不是表变量。
编辑
因此,根据您的评论,我的更新如下:
1.) 如果您使用的是表变量 ( @SecondTable
);那么没有必要下降。SQL Server 会为您解决这个问题。
2.)听起来您的超时是由使用表的计算引起的,而不是表本身的删除。在这种情况下; 我可能会建议使用临时表而不是表变量;因为临时表可以让您添加索引等以提高性能;而表变量不会。如果这还不够;您可能需要增加查询的超时时间。
3.) 在 SQL 中;表变量 ( @SecondTable
) 和临时表 ( #SecondTable
) 是两个完全不同的东西。我会参考表变量和临时表的 MSDN 文档