SQL Server 2005临时表

时间:2020-03-05 18:47:39  来源:igfitidea点击:

在存储过程中,何时在SQL Server 2005中创建#Temptable?在创建查询执行计划时或者在执行存储过程时?

if (@x = 1)
    begin
        select 1 as Text into #Temptable
    end
else
    begin
        select 2 as Text into #Temptable
    end

解决方案

回答

它在执行时创建,在会话结束时删除。

回答

有趣的问题。

对于我们要创建的临时表的类型,我认为是在执行存储过程的时候。使用前缀创建的表可用于创建它们的SQL Server会话。会话结束后,将其删除。

该URL:http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx似乎指示在创建查询执行计划时未创建临时表。

回答

尽管可能会在会话结束时自动删除该表,但良好的做法是在完成处理后自行删除该表。

回答

我们可能还需要考虑表变量,该表变量的生命周期已完全为我们管理。

DECLARE @MyTable TABLE (MyPK INT IDENTITY, MyName VARCHAR(100))
INSERT INTO @MyTable ( MyName ) VALUES ( 'Icarus' )
INSERT INTO @MyTable ( MyName ) VALUES ( 'Daedalus' )
SELECT * FROM @MyTable

我几乎总是使用这种方法,但是它确实有缺点。最值得注意的是,我们只能使用可以在TABLE()构造中声明的索引,从本质上讲,我们只能使用主键-不能使用ALTER TABLE。