三种SQL索引

数据库 SQL Server
下文将为您介绍聚集索引等三种最常见的SQL索引,供您参考,希望对您学习SQL数据库能有所启迪。

SQL索引是SQL中非常重要的组成部分,下面就将为您介绍三种最常见的SQL索引,希望对您认识SQL索引有所帮助。

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

二 .非聚集索引

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

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

三 .包含索引

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

 

【编辑推荐】

教您如何进行SQL数据分页

教您如何使用sql DATENAME

SQL查询日期的问题

SQL外连接简介

SQL中CREATE语句的使用

 

 

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

2010-09-25 14:38:29

SQL分页

2010-06-28 17:43:44

SQL Server

2010-09-25 15:07:08

SQL插入语句

2010-09-06 09:11:24

SQLUPDATE语句

2011-08-17 18:12:48

2010-10-21 16:43:47

sql server恢

2010-10-21 16:18:37

sql server服

2010-07-19 14:43:21

SQL Server查

2021-09-10 18:09:42

SQL注入漏洞网络攻击

2010-10-20 13:52:07

SQL Server数

2011-01-18 15:35:59

jQueryJavaScriptweb

2013-01-10 10:26:56

SQL Server数据库

2010-10-21 09:43:15

2010-11-10 13:28:06

SQL Server删

2022-06-20 08:50:16

TypeScript类型语法

2009-07-16 16:23:59

Swing线程

2010-10-28 10:27:35

oracle赋权

2009-12-23 13:52:18

2010-09-25 15:15:32

2009-11-06 13:23:27

WCF模式
点赞
收藏

51CTO技术栈公众号