表变量是在内存中还是在tempdb中创建和保存的?

Pra*_*aur 11 sql t-sql sql-server table-variable

表变量是在内存中还是在tempdb中创建的?短临时表也一样吗?

SQL*_*ace 13

将在tempdb中创建临时表,您可以通过查询tempdb中的sysobjects表轻松地检查它

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

select * from tempdb.sys.sysobjects
where name like '#test%'
Run Code Online (Sandbox Code Playgroud)

你应该看到像#test _______ 000000000905这样的名字,但后面会有更多的下划线

如果需要检查是否存在临时表,请参阅如何检查SQL Server中是否存在临时表

Table变量的结构也是在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
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此处:http://support.microsoft.com/kb/305977