索引学习笔记

一、    索引概述

  索引是数据库规划和系统维护至关重要的部分,添加正确的索引能够极大减少查询的执行时间。在正式学习索引知识前,将了解SQL Server 的数据存储机制,包括索引分配策略以及内部结构。

一、    数据库文件 

  与数据库有关的文件有两种:主数据库文件(*.MDF)、数据库日志文件(*.Ldf)。

  主数据库文件是数据存储的地方。

  数据库日志文件时记录从最后一次把数据提交到数据库中心以来,发生在数据库上的事情连续记录。

1.  区段 

  区段(extent)是用来为表和索引分配空间的基本存储单元。每个区段由8个连续的数据页组成(64k)

  区段、数据页、数据行关系图如下所示:

1.  数据页

  页是到达数据行的最后一个级别。尽管每个区段中页得数据时固定的,但是页中的行数是不固定的,这完全取决于行的大小,是可变的。数据页结构图:

  

1.  数据行

  通常,行的大小能够达到8K,即一行数据占用一页数据页。

一、    理解索引

1.  B树【平衡二叉树】

  

 

2.  索引类型和索引导航

3.  聚集索引

  聚集索引是唯一的对与一个表而言,表中数据的物理顺序和表的聚集索引的顺序相同。聚集索引的特殊之处在于其页级是真正的数据

  注意:当新纪录插入到索引结构的中间是,会发生常规的页拆分,来自原来页中后半部分的纪录被移动到新页上,新记录适当的插入到新的或旧的页中。页拆分对系统的系能开销很大,如图所示:

  

  当新记录逻辑上位于索引结构的末尾时,将创建一个新页。但是只有新记录添加到新页中,如图所示:

聚集索引中数据导航:

3.  非聚集索引

  堆上的非聚集索引在各方面都与聚集索引的作用方式很类似。但是依然有一些不同,页级不是数据,而是到数据的指针。指针以索引所指向的特定行为的行标识符形成,它由区、页和行偏移量组成。非聚集索引数据导航过程如下所示:

  

3.  聚集表上的非聚集索引

一、    索引管理

创建索引:

Create  [unique] [Clustered] [Noclustered] index <索引名> On <表或视图名> (<列名> [ASC/DESC] [……n])

删除索引:

Drop Index <表或视图名>.<索引名>

 

 

posted @ 2012-10-03 21:09  pstune  阅读(393)  评论(0编辑  收藏  举报