Временные таблицы SQL Server 2005 - PullRequest
1 голос
/ 04 сентября 2008

Когда в хранимой процедуре создается #Temptable в SQL Server 2005? При создании плана выполнения запроса или при выполнении хранимой процедуры?

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

Ответы [ 4 ]

2 голосов
/ 04 сентября 2008

Создается при выполнении и удаляется при завершении сеанса.

1 голос
/ 17 сентября 2008

Вы также можете рассмотреть табличные переменные, жизненный цикл которых полностью для вас управляется.

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.

1 голос
/ 05 сентября 2008

Несмотря на то, что он может автоматически отбрасываться в конце сеанса, рекомендуется покидать стол самостоятельно, когда вы закончите с ним.

1 голос
/ 04 сентября 2008

Интересный вопрос.

Для типа создаваемой временной таблицы, я думаю, это когда хранимая процедура выполняется. Таблицы, созданные с префиксом #, доступны для сеанса SQL Server, в котором они созданы. После завершения сеанса они удаляются.

Этот URL: http://www.sql -server-performance.com / tips / query_execution_plan_analysis_p1.aspx , кажется, указывает на то, что временные таблицы не создаются при создании планов выполнения запроса.

...