Sql-Server
SQL Server - 包含使用者定義表類型的非聚集索引?
我正在使用記憶體中的使用者定義的表類型,並且一直在為它們創建索引。
這是我想做的事情:
CREATE TYPE dbo.CustomersTbl AS TABLE ( customerID int NOT NULL, customerName nvarchar(100), customerAddress nvarchar(100), customerCity nvarchar(100), customerEmail nvarchar(100) INDEX IDX1 NONCLUSTERED (customerID) INCLUDE(customerName,customerAddress,customerCity) ) WITH (MEMORY_OPTIMIZED = ON);
如果我不包含該
INCLUDE
部分,這可以正常工作。如果這是一個標準表,我將使用
INCLUDE
.所以我的問題是,有沒有辦法在使用者定義的表類型上創建索引
INCLUDE
,或者我什至不想這樣做?我正在使用這些表類型來創建記憶體表變數。我目前正在使用 SQL Server 2017。
INCLUDE
記憶體優化表或表變數不支持。對於這些對象, 的目的INCLUDE
是沒有意義的,因為一旦您到達記憶體中的行位置,所有列都可用。記憶體優化索引本質上是覆蓋的,請參閱記憶體優化索引指南
基於磁碟的索引使用 RID 或聚集索引鍵的行定位器,並遵循這些成本 1-4 邏輯 IO,然後在頁面上的插槽表中定位目標行並到達那裡。In-Memory 索引的行定位器是一個指針。跟隨一個指針需要一個 CPU 指令和一個主記憶體讀取,在 100ns-1000ns 範圍內的某個地方。