1

ストアド プロシージャでは、SQL Server 2005 で #Temptable が作成されるのはいつですか? クエリ実行プランを作成するとき、またはストアド プロシージャを実行するときは?

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

4 に答える 4

2

実行時に作成され、セッションの終了時に削除されます。

于 2008-09-04T14:44:06.660 に答える
2

また、ライフサイクルが完全に管理されているテーブル変数を検討することもできます。

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 を使用する必要はありません。

于 2008-09-16T21:21:59.847 に答える
1

興味深い質問です。

作成している一時テーブルのタイプについては、ストアド プロシージャが実行されたときだと思います。# プレフィックスで作成されたテーブルは、それらが作成された SQL Server セッションからアクセスできます。セッションが終了すると、テーブルは削除されます。

この URL: http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspxは、クエリ実行プランの作成時に一時テーブルが作成されていないことを示しているようです。

于 2008-09-04T14:51:41.557 に答える
1

セッションの終了時に自動的に削除される場合がありますが、使用が終了したら自分でテーブルを削除することをお勧めします。

于 2008-09-04T22:12:29.860 に答える