2014-05-13 116 views
0

剛剛安裝了SQL Server 2014.SQL Server 2014內存優化表類型

直接從文檔中獲得的語​​法失敗。

這失敗的Sales

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) 

,出現以下錯誤

消息8135,級別16,狀態0,第10行
表級約束不規範ify列表,表'SalesOrderDetailType_inmem'。

如何創建內存優化表類型?

+0

內存優化的表類型不會比現有的#temp更快。查詢從8秒到10秒。這似乎是MEMORY_OPTIMIZED表類型的主要候選者。這兩種表格類型都裝載了800,000行,我將這個存儲區的大小定爲2,000,000。 – Paparazzi

+0

已經做了一些性能測試,並且內存中的對象不起眼。儘管如此,我仍然認爲他們在高併發負載下發光。 – MarkD

+0

@MarkD我希望這是因爲仍然不應該爲很多行使用表類型。我有正在轉換的常規桌子。希望在那裏看到和改進。 – Paparazzi

回答

1

下面的語法似乎工作。我爲dbo模式編寫了腳本。建議將BUCKET_COUNT設置爲將要保存的唯一值的1倍-2倍。

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)