11

テーブル変数はメモリまたはtempdbに作成されていますか?短い一時テーブルについても同じですか?

4

3 に答える 3

13

一時テーブルはtempdbに作成され、tempdbのsysobjectsテーブルにクエリを実行することで簡単に確認できます。

create table #test (Item char(1),  TimeSold varchar(20))

select * from tempdb.sys.sysobjects
where name like '#test%'

#test_______000000000905のような名前の何かが表示されるはずですが、さらにアンダースコアが付いています

一時テーブルが存在するかどうかを確認する必要がある場合は、SQLServerに一時テーブルが存在するかどうかを確認する方法も参照してください。

テーブル変数の構造もtempdbで作成されます。テーブル変数を表示するには、次のようなことができますが、テーブル変数を作成するときに誰かがあなたの前に忍び込んでいないという保証はありません。テーブル変数名は#7BB1235Dのようになります

    declare @v table(id int) 
select top 1 * from tempdb.sys.sysobjects
where name like '#%'
and name not like '%[_]%'
order by crdate desc
select * from @v

詳細については、こちらを参照してください:http ://support.microsoft.com/kb/305977

于 2010-08-18T13:18:59.737 に答える
2

MS SQL 2014 では、特別なタイプのテーブル変数「メモリ最適化テーブル変数」が導入されました。また、tempdb は使用しません。

https://msdn.microsoft.com/en-us/library/dn535766.aspxを参照してください

于 2015-02-19T09:14:57.853 に答える