首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存中Oltp哈希索引与非聚集

内存中Oltp哈希索引与非聚集
EN

Stack Overflow用户
提问于 2015-06-09 10:23:35
回答 1查看 1.4K关注 0票数 0

SQL 2014内存表支持两种类型的索引,哈希非聚集,非clustered.Since内存优化表不存储为行,需要有一个索引compulosary.Below是创建哈希索引的语法。

代码语言:javascript
复制
CREATE TABLE dbo.sample_memoryoptimizedtable_Hash
(
 c1 int NOT NULL,
 c2 float NOT NULL,
 c3 decimal(10, 2) NOT NULL
CONSTRAINT PK_sample_memoryoptimizedtable_Hash **PRIMARY KEY NONCLUSTERED HASH**
(
 c1 
)WITH ( BUCKET_COUNT = 1024)
)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
GO

上面的语句创建一个散列索引,并将各自的行存储到其存储桶中,.Buckets包含指向数据的内存地址的指针。

但是当我们创建以下非聚集索引时

代码语言:javascript
复制
CREATE TABLE dbo.sample_memoryoptimizedtable_Range
(
 c1 int NOT NULL,
 c2 float NOT NULL,
 c3 decimal(10, 2) NOT NULL
CONSTRAINT PK_sample_memoryoptimizedtable_Range PRIMARY KEY NONCLUSTERED 
(
 c1 ASC
) 
)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
GO

上面的索引是如何存储的,这是作为B树存储的,因为这个索引没有散列,而且表、索引是在startup.How上重新创建的。

下面是最好的链接和我的分析为远。

http://www.mssqltips.com/sqlservertip/3099/understanding-sql-server-memoryoptimized-tables-hash-indexes/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-16 14:45:46

您所指的“非聚集”索引实际上是范围索引。Hash和Range索引都是非聚集的,内存中的OLTP表中没有“聚集”索引(主键强制实现为聚集散列索引)。范围索引是通过修改的B-树实现的,您可以在http://research.microsoft.com/pubs/193594/Hekaton%20-%20Sigmod2013%20final.pdf的sigmod白皮书上更多地了解这两种索引的基本细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30729353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档