SQL SERVER索引介绍

数据库 SQL Server
下面就将为您介绍SQL SERVER中的聚集索引、非聚集索引、以及包含索引,供您参考,如果您对SQL SERVER中的索引感兴趣的话,不妨一看。

SQL SERVER中,索引是不能不提到的,下面就将为您介绍3种SQL SERVER索引,供您参考,希望对您学习SQL SERVER能有所帮助。

一 .聚集SQL SERVER索引
 
聚集索引的页级别包含了索引键,还包含数据页,因此,关于 除了键值以外聚集索引的叶级别还存放了什么的答案就是一切,也就是说,每行的所有字段都在叶级别种。
另一种说话是:数据本身也是聚集索引的一部分,聚集索引基于键值保持表中的数据有序。
SQL SERVER 中,所有的聚集索引都是唯一的,如果在创建聚集索引时没有指定UNIQUE 关键字,SQL SERVER 会在需要时通过往记录中添加一个唯一标识符(Uniqueifier)在内部保证索引的唯一性,该唯一标识符是一个4字节的值,作为附加在聚集索引键的字段添加到数据中,只有那些声明为索引键字段并拥有重复值的行才会被添加。

二 .非聚集SQL SERVER索引
对于非聚集索引,叶级别不包含全部的数据。除了键值以外,每个叶级别(树的最低层)中的索引行包含了一个书签(bookmark),告诉SQL Server 可以在哪里找到与索引键相应的数据行。一个书签课能有两种格式。如果表上存在聚集索引,书签就是相应的数据行的聚集索引键。如果表是堆(heap)结构 ,就是没有聚集索引的情况下 ,书签就是一个行标识符 row identifier,rid ,以 文件号 页号 槽号 的格式来定位实际的行。

非聚集索引的存在与否并不影响数据分页的组织,因此每张表上并不像聚集索引那样只局限于拥有一个非聚集索引,SQL  Server 2005  每张表能够包含249 个非聚集索引 SQL Server 2008 每张表能够包含999 个非聚集索引 ,但是实际上所用到的比这个数要少的多。

三 .包含SQL SERVER索引
索引键字段数量限制是16个,总共900个字节大小 ,包含性列只在叶级别中出现而且不以任何方式控制索引行的排序。它们的目的是使叶级别能够包含更多的信息从而更大地发挥覆盖索引(Covering index)的索引调优能力.覆盖索引是一种非聚集索引,在其叶级别就可以找到满足查询的全部信息,这样sql server就根本没有必要访问数据分页了,在一些情况下 sql serer 会悄悄的为索引添加一个包含性列。这可能发生在索引建立于分区表 也就是我今天是发的博客 O(∩_∩)O (partitioned table )上没有指定 on filegroup  或者 no partition_scheme 的情况下。

 

 

【编辑推荐】

Sql Server日期格式转换示例

使用ADO在sql server建表的方法

SQL函数中的SUBSTRING函数

SQL函数之DATEPART函数

随机SQL函数示例

 

 

责任编辑:段燃 来源: 互联网
相关推荐

2010-07-07 10:54:22

SQL Server索

2010-07-19 16:36:13

SQL Server视

2009-08-06 16:44:06

2010-07-23 18:33:57

SQL Server游

2011-03-28 10:17:39

sql server

2010-10-19 16:06:26

SQL Server索

2011-05-20 10:52:50

SQL Server 索引

2010-07-19 16:26:05

SQL Server非

2011-03-18 14:54:52

SQL Server索引结构

2010-07-21 14:04:12

SQL Server引

2009-08-06 18:15:13

C# SQL Serv

2010-09-27 10:59:23

SQL SERVER事

2010-10-22 15:52:41

SQL Server创

2009-08-24 15:41:50

C#连接SQL Ser

2010-11-08 10:57:05

SQL Server的

2010-07-19 15:50:53

SQL Server索

2011-08-30 13:54:29

SQL Server全文索引

2011-08-30 16:43:32

SQL Server

2010-07-07 10:47:58

SQL Server索

2011-08-11 14:15:23

SQL Server索引碎片
点赞
收藏

51CTO技术栈公众号