删除临时表的好处

Hog*_*gan 6 sql-server

在 SQL Server 中删除临时表有什么好处(如果有的话)?

例如:

DROP TABLE #temp;
Run Code Online (Sandbox Code Playgroud)

由于服务器会自动删除临时表,因此该语句似乎不起作用。

Aar*_*and 7

我通常只是出于习惯而明确删除 #temp 表(我喜欢清理我创建的任何东西)。有一种说法是,显式删除 #temp 表会阻止 #temp 表缓存和重用,但事实并非如此:有关更多详细信息,请参阅 @PaulWhite 的这篇博文,而这篇则更多。


Mar*_*ith 7

#temp在子作用域(过程、触发器、EXEC-ed SQL)中创建的表在作用域结束时自动删除。

但是@@NESTLEVEL只有在会话结束时才会自动删除 0处的那些。这些挂了多个批次。

因此,对于此类即席查询,必须删除它们(特别是如果它们可能会运行多次或稍后的批处理将创建一个相同名称的查询)。

将以下内容粘贴到 SSMS 中的新查询窗口中

CREATE TABLE #T (X INT PRIMARY KEY)

INSERT INTO #T VALUES (1)
Run Code Online (Sandbox Code Playgroud)

将在第二次运行时失败

Msg 2714, Level 16, State 6, Line 2

数据库中已经有一个名为“#T”的对象。