当前位置:  开发笔记 > 后端 > 正文

MS-SQL是否支持内存表?

如何解决《MS-SQL是否支持内存表?》经验,为你挑选了2个好方法。

最近,我开始将一些应用程序更改为支持MS SQL Server作为替代后端.

我遇到的一个兼容性问题是使用MySQL的CREATE TEMPORARY TABLE来创建内存表,这些表在会话期间保存数据以实现非常快速的访问,而无需永久存储.

MS SQL中的等价物是什么?

一个要求是我需要能够像使用其他临时表一样使用临时表,尤其是JOIN永久表.



1> Keith..:

您可以创建表变量(在内存中)和两种不同类型的临时表:

--visible only to me, in memory (SQL 2000 and above only)
declare @test table (
    Field1 int,
    Field2 nvarchar(50)
);

--visible only to me, stored in tempDB
create table #test (
    Field1 int,
    Field2 nvarchar(50)
)

--visible to everyone, stored in tempDB
create table ##test (
    Field1 int,
    Field2 nvarchar(50)
)

编辑:

根据反馈,我认为这需要一点澄清.

#table并且##table将永远是在tempdb.

@Table变量通常在内存中,但不保证是.SQL根据查询计划决定,并在需要时使用TempDB.



2> Manu..:

@Keith

这是一种常见的误解:表变量不一定存储在内存中.事实上,SQL Server决定是将变量保留在内存中还是将其溢出到TempDB.没有可靠的方法(至少在SQL Server 2005中)确保表数据保存在内存中.有关详细信息,请查看此处

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有