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。