表变量创建并保存在内存或 tempdb 中?

发布于 2024-09-15 06:34:28 字数 42 浏览 3 评论 0原文

表变量是在内存中还是在 tempdb 中创建的?同样适用于 临时表短?

Are table variables created in memory or in tempdb? Same for
short temp tables?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风流物 2024-09-22 06:34:28

中的 sysobjects 表来轻松检查它,

将在 tempdb 中创建一个临时表,您可以通过查询 tempdb示例

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

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

您应该看到名称类似 #test_______000000000905 的内容,但随后带有更多下划线

如果您需要检查临时表是否存在,请参阅还有 怎么做检查 SQL Server 中是否存在临时表

表变量的结构也在 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

A temp table will be created in tempdb and you can easily check for it by querying the sysobjects table in tempdb

example

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

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

you should see something with a name like #test_______000000000905 but then with more underscores

If you need to check if a temp table exists then see also How Do You Check If A Temporary Table Exists In SQL Server

The structure of Table variable is also created in tempdb To see the table variable you could do something like this but there is not guarantee that someone didn't sneak in before you when creating his/her table variable. The table variable name will be something like #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

For more info see here: http://support.microsoft.com/kb/305977

病毒体 2024-09-22 06:34:28

据我了解,至少表变量的结构始终是在 TempDB 中创建的。然后,正如SQLMenace< /a>,数据可能会也可能不会溢出。

根据这篇 Microsoft 知识库文章

表变量不是仅内存变量
结构。因为表变量
可能容纳的数据超出了容纳范围
内存,它必须在磁盘上有一席之地
存储数据。表变量是
在tempdb数据库中创建类似
到临时表。如果内存是
可用,表变量和
创建临时表并
在内存中处理(数据
缓存)。

It's been my understanding that, at a minimum, the structure of a table variable is always created in TempDB. Then, as pointed out by SQLMenace, the data may or may not spill over.

Per this Microsoft Knowledge Base Article:

A table variable is not a memory-only
structure. Because a table variable
might hold more data than can fit in
memory, it has to have a place on disk
to store data. Table variables are
created in the tempdb database similar
to temporary tables. If memory is
available, both table variables and
temporary tables are created and
processed while in memory (data
cache).

诺曦 2024-09-22 06:34:28

MS SQL 2014 中引入了特殊类型的表变量“内存优化表变量”。而且他们不使用 tempdb。

请参阅 https://msdn.microsoft.com/en-us/library/dn535766。 ASPX

In MS SQL 2014 was introduced special type of table variables "Memory-Optimized Table Variables". And they don't use tempdb.

See https://msdn.microsoft.com/en-us/library/dn535766.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文