SQLサーバーで一時テーブルを作成する前に#
を使用する必要がありますか?
例:
SELECT column1, column2, someInt, someVarChar
INTO ItemBack1
FROM table2
WHERE table2.ID = 7
ItemBack1の場合、#
シンボルを使用する必要がありますか?
そうでない場合、一時テーブルの作成における#
の使用は何ですか?
はい。一時テーブルを作成するには、テーブル名の前に「#」(ハッシュ)を付ける必要があります。
後でテーブルが必要ない場合は、先に進んで作成してください。一時テーブルは、通常のテーブルに非常によく似ています。ただし、tempdbで作成されます。また、現在のセッションを介してのみアクセス可能です。つまり、EGの場合:別のユーザーが作成した一時テーブルにアクセスしようとしても、そのユーザーはアクセスできません。
「##」(ダブルハッシュは、他のセッションからもアクセスできる「グローバル」一時テーブルを作成します。
一時テーブルの基本については、以下のリンクを参照してください。 http://www.codeproject.com/Articles/42553/Quick-Overview-Temporary-Tables-in-SQL-Server-2005
テーブルの内容が5000行未満で、nvarchar(MAX)、varbinary(MAX)などのデータ型が含まれていない場合は、テーブル変数の使用を検討してください。
RAMに保存されている他の変数と同じであるため、最速です。 RAMではなくtempdbにも保存されます 。
DECLARE @ItemBack1 TABLE
(
column1 int,
column2 int,
someInt int,
someVarChar nvarchar(50)
);
INSERT INTO @ItemBack1
SELECT column1,
column2,
someInt,
someVarChar
FROM table2
WHERE table2.ID = 7;
テーブル変数の詳細: http://odetocode.com/articles/365.aspx
この2つのテーブルItemBack1
と#ItemBack1
の違いは、最初のものは永続的(永続的)であり、もう一方は一時的であるということです。
もう一度質問を見てみると
SQLサーバーで一時テーブルを作成するために#を使用する必要がありますか?
答えははいです。この前の#
がなければ、テーブルは一時テーブルではなく、すべてのセッションとスコープから独立しているためです。