USE [master]
--创建数据库
CREATE DATABASE [TEST_DB]
ON PRIMARY
( NAME = N'TEST_DB', FILENAME = N'D:\项目\DATA\TEST_DB.mdf' ,
SIZE = 24800KB , FILEGROWTH = 24800KB )
LOG ON
( NAME = N'TEST_DB_log', FILENAME = N'D:\项目\DATA\TEST_DB_log.ldf' ,
SIZE = 24800KB , FILEGROWTH = 24800KB )
GO
--创建内存表使用的文件组
ALTER DATABASE [TEST_DB] ADD FILEGROUP [TEST_FILE] CONTAINS MEMORY_OPTIMIZED_DATA
GO
--创建内存表使用的文件夹
ALTER DATABASE [TEST_DB]
ADD FILE ( NAME = N'TEST_FILE', FILENAME = N'D:\项目\DATA\TEST_FILE')
TO FILEGROUP [TEST_FILE]
GO
创建内存表限制比较多:
1. 支持的数据类型:http://msdn.microsoft.com/ZH-CN/library/dn133179(v=sql.120).aspx
2. 内存优化表支持自增,但唯一允许用于 seed 和 increment 的值为 1;(1,1) 是 seed 和 increment 的默认值;
3. 内存优化表不支持CHECK约束,在非hash索引列上也不行;
4. 内存优化表不支持使用的排序规则所具有的代码页并非 1252 的数据类型 char(n) 和 varchar(n);
5. 内存优化表不支持nvarchar(max)或varchar(max)
6. 内存优化表索引不支持未使用 *_BIN2 排序规则的字符列上的索引,在非hash索引列上也不行;
7. 内存优化表上的索引不支持索引键中有可为 Null 的列,在非hash索引列上也不行;
8. 内存优化表必须有至少一个索引或主键
创建内存优化表Demo
CREATE TABLE [dbo].[TB1_IM] ( [c1] [int] NOT NULL IDENTITY(1,1) PRIMARY KEY
NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),
[c2] [nchar](200) COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL
INDEX ix_c2 NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),
[c3] [nvarchar](200) COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL,
[c4] [nvarchar](200) COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL,
INDEX ix_c3_c4 NONCLUSTERED HASH(c3,c4) WITH(BUCKET_COUNT=1000000),
INDEX ix_c2_c3 NONCLUSTERED (c2,c3)
)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
创建索引及主键的字段要把nchar、nvarchar的数据类型指定为 COLLATE Chinese_PRC_Stroke_90_BIN2
https://msdn.microsoft.com/zh-cn/library/ms174979(v=sql.120).aspx
https://msdn.microsoft.com/zh-cn/library/dn133166(v=sql.120).aspx