Временные таблицы SQL Server 2005
-
09-06-2019 - |
Вопрос
Когда в хранимой процедуре создается #Temptable в SQL Server 2005?При создании плана выполнения запроса или при выполнении хранимой процедуры?
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 .