内存优化的表类型和临时表

例如,这是传统的基于 tempdb 的表类型:

CREATE TYPE dbo.testTableType AS TABLE
(
   col1 INT NOT NULL,
   col2 CHAR(10)
);

要对内存优化此表类型,只需添加选项 memory_optimized=on,如果原始类型中没有,则添加索引:

CREATE TYPE dbo.testTableType AS TABLE
(
   col1 INT NOT NULL,
   col2 CHAR(10)
)WITH (MEMORY_OPTIMIZED=ON);

全局临时表是这样的:

CREATE TABLE ##tempGlobalTabel 
(  
    Col1   INT   NOT NULL ,  
    Col2   NVARCHAR(4000)  
);  

内存优化的全局临时表:

CREATE TABLE dbo.tempGlobalTabel 
(  
    Col1   INT   NOT NULL   INDEX ix NONCLUSTERED,  
    Col2   NVARCHAR(4000)  
)  
    WITH  
        (MEMORY_OPTIMIZED = ON,  
         DURABILITY = SCHEMA_ONLY);  

内存优化全局临时表(## temp):

  1. 使用与全局 ##temp 表相同的模式创建新的 SCHEMA_ONLY 内存优化表
    • 确保新表至少有一个索引
  2. 将 Transact-SQL 语句中对 ##temp 的所有引用更改为新的内存优化表 temp
  3. DELETE FROM temp 替换代码中的 DROP TABLE ##temp 语句,以清理内容
  4. 从代码中删除 CREATE TABLE ##temp 语句 - 这些语句现在是多余的

更多信息