テーブル型変数を使用する方法
2016/6/8
文書番号:20508
SQL Server で使用できる変数のデータ型にテーブル型というものがあります。
通常のテーブルは指定したファイルグループに実体が作成されます。
一時テーブル(#テーブル や##テーブル)はtempDBに作成されます。
テーブル型変数は変数なのでメモリ上に作成されます。
つまり、一番高速です。たぶん。
ただし、メモリ上に展開されるのであまり大きいデータを保持しようとするとスワップするので逆に遅くなってしまいます。
目安として数千行程度で、著しく増大しないことが確実な用途であれば非常に有用であると思います。
変数は自動で削除されるので明示的に削除する必要はありません。
通常のテーブルは指定したファイルグループに実体が作成されます。
一時テーブル(#テーブル や##テーブル)はtempDBに作成されます。
テーブル型変数は変数なのでメモリ上に作成されます。
つまり、一番高速です。たぶん。
ただし、メモリ上に展開されるのであまり大きいデータを保持しようとするとスワップするので逆に遅くなってしまいます。
目安として数千行程度で、著しく増大しないことが確実な用途であれば非常に有用であると思います。
変数は自動で削除されるので明示的に削除する必要はありません。
【使用方法】
- テーブル型変数を宣言する
DECLARE @TAB TABLE( CODE char(4) NOT NULL ,NAME varchar(50) )
- テーブル型変数にデータを挿入する
以下の例はどの書き方も可能です。
INSERT INTO @TAB VALUES('0001','りんご') INSERT INTO @TAB VALUES('0002','みかん') INSERT INTO @TAB VALUES('0003','ぶどう') INSERT INTO @TAB VALUES ('0001','りんご') ,('0002','みかん') ,('0003','ぶどう') INSERT INTO @TAB SELECT 列1 ,列2 FROM TABLE_A
- テーブル型変数のデータを更新する
UPDATE @TAB SET NAME = 'なし' WHERE CODE = '0003'
- テーブル型変数のデータを削除する
DELETE @TAB WHERE CODE = '0002';
- テーブル型変数のデータを取得する
SELECT * FROM @TAB