Tsql SQL Server 2014内存优化表类型

Tsql SQL Server 2014内存优化表类型,tsql,memory-optimized-tables,Tsql,Memory Optimized Tables,刚刚安装了SQL Server 2014 文档中直接使用的语法失败 此操作在销售时失败: CREATE TYPE [Sales].[SalesOrderDetailType_inmem] AS TABLE( [OrderQty] [smallint] NOT NULL, [ProductID] [int] NOT NULL, [SpecialOfferID] [int] NOT NULL, [LocalID] [int] NOT NULL, INDEX [IX_Produc

刚刚安装了SQL Server 2014

文档中直接使用的语法失败

此操作在销售时失败:

CREATE TYPE [Sales].[SalesOrderDetailType_inmem] AS TABLE(
  [OrderQty] [smallint] NOT NULL,
  [ProductID] [int] NOT NULL,
  [SpecialOfferID] [int] NOT NULL,
  [LocalID] [int] NOT NULL,

  INDEX [IX_ProductID] HASH ([ProductID]) WITH ( BUCKET_COUNT = 8),
  INDEX [IX_SpecialOfferID] NONCLUSTERED 
)
WITH ( MEMORY_OPTIMIZED = ON )
但是如果我删除
Sales
它仍然失败

CREATE TYPE [SalesOrderDetailType_inmem] AS TABLE(
  [OrderQty] [smallint] NOT NULL,
  [ProductID] [int] NOT NULL,
  [SpecialOfferID] [int] NOT NULL,
  [LocalID] [int] NOT NULL,

  INDEX [IX_ProductID] HASH ([ProductID]) WITH ( BUCKET_COUNT = 8),
  INDEX [IX_SpecialOfferID] NONCLUSTERED 
)
WITH ( MEMORY_OPTIMIZED = ON )
有以下错误

Msg 8135,第16级,状态0,第10行
表级约束未指定列列表,表“SalesOrderDetailType\u inmem”


如何创建内存优化表类型?

以下语法似乎有效。我已经为
dbo
模式编写了脚本。建议将
BUCKET\u COUNT
设置为将保持的唯一值的~1x-2x

CREATE TYPE [SalesOrderDetailType_inmem] AS TABLE(
  [OrderQty] [smallint] NOT NULL,
  [ProductID] [int] NOT NULL 
    INDEX [IX_ProductID] HASH ([ProductID]) WITH ( BUCKET_COUNT = 8),
  [SpecialOfferID] [int] NOT NULL 
    INDEX [IX_SpecialOfferID] NONCLUSTERED ,
  [LocalID] [int] NOT NULL

)
WITH ( MEMORY_OPTIMIZED = ON )

内存优化的表类型不快于现有的#temp。查询时间从8秒变为10秒。这似乎是内存优化表类型的主要候选。这两种表类型装载了800000行,我将存储桶的大小定为2000000行。我已经做了一些性能测试,内存中的对象并不令人印象深刻。我相信它们在高并发负载下会发光。@MarkD我希望这是因为仍然不应该对很多行使用表类型。我有一张我正在转换的普通桌子。希望在那里看到进步,我想你会失望的。不过,在本机编译的proc中,它们可能会表现得很好——这是我还没有测试过的东西。我想人们会对评论中的对话感到紧张吗?已经开通了聊天室-第一次,希望我做得对。