SQL SERVER 2014创建内存表

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 )

创建索引及主键的字段要把ncharnvarchar的数据类型指定为 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

posted @ 2015-08-10 14:25  wangping01  阅读(412)  评论(0编辑  收藏  举报