有哪些不同的SQL Server索引类型?

时间:2011-06-30 15:44:43

标签: sql-server indexing

在Squirrel中获取我们表格的信息会将索引类型返回为整数。我在Microsoft的网站上找到了Types of Indexes,但它没有映射到数值。

我在Linux上,所以我无法完全掌握SQL Management Studio。是否有任何地方实际将数字值映射到Microsoft的命名类型?

顺便说一句,我想知道索引类型1和索引类型3是什么。

4 个答案:

答案 0 :(得分:4)

可以使用不同的映射。

sp_indexes存储过程返回以下索引类型:

0 = Statistics for a table 
1 = Clustered 
2 = Hashed 
3 = Other

另一方面,sys.indexes目录视图使用以下映射:

0 = Heap
1 = Clustered
2 = Nonclustered
3 = XML

答案 1 :(得分:2)

在sql server 2005+中,类型是(来自sys.indexes DMV):

  

0 =堆

     

1 =群集

     

2 =非聚集

     

3 = XML

     

4 =空间

空间仅为2008

MSDN Page

答案 2 :(得分:2)

哈希 - 使用哈希索引,通过内存中的哈希表访问数据。散列索引占用固定数量的内存,这是存储桶计数的函数。

内存优化的非聚簇索引 - 对于内存优化的非聚簇索引,内存消耗是行数和索引键列大小的函数

群集 - 聚簇索引根据聚簇索引键按顺序对表或视图的数据行进行排序和存储。聚簇索引实现为B树索引结构,支持基于聚簇索引键值快速检索行。

非聚簇 - 可以在具有聚簇索引的表或视图上或堆上定义非聚簇索引。非聚簇索引中的每个索引行都包含非聚簇键值和行定位符。此定位器指向具有键值的聚簇索引或堆中的数据行。索引中的行按索引键值的顺序存储,但除非在表上创建聚簇索引,否则不保证数据行具有任何特定顺序。

唯一 - 唯一索引可确保索引键不包含重复值,因此表或视图中的每一行都以某种方式唯一。

Columnstore - 内存中的列存储索引通过使用基于列的数据存储和基于列的查询处理来存储和管理数据。 Columnstore索引适用于主要执行批量加载和只读查询的数据仓库工作负载。与传统的面向行的存储相比,使用columnstore索引可以实现高达10倍的查询性能提升,并且在未压缩的数据大小上可以实现高达7倍的数据压缩。

包含列的索引 - 非扩散索引,除了键列外,还扩展为包含非键列。

计算列的索引 - 从一个或多个其他列或某些确定性输入的值派生的列的索引。

已过滤 - 优化的非聚簇索引,尤其适用于覆盖从明确定义的数据子集中进行选择的查询。它使用过滤谓词来索引表中的一部分行。与全表索引相比,精心设计的筛选索引可以提高查询性能,降低索引维护成本并降低索引存储成本。

空间 - 空间索引提供了在几何数据类型的列中更有效地对空间对象(空间数据)执行某些操作的功能。空间索引减少了需要应用相对昂贵的空间操作的对象的数量。

XML - xml数据类型列中XML二进制大对象(BLOB)的碎片和持久表示。

全文 - 一种特殊类型的基于令牌的功能索引,由Microsoft SQL全文引擎构建和维护。它为字符串数据中的复杂单词搜索提供了有效支持。

答案 3 :(得分:0)

- 索引类型

集群 非聚集 独特 包含列的索引 索引视图 全文 XML