标签:
在SqlServer中分为两种索引,一是聚集索引;一是费聚集索引。下面我就分别对两种索引进行介绍并分析其区别和各自的特点。
1.聚集索引
之前看过一个比方,我觉得非常恰当这里也用这个例子来说明两种索引。我们的字典本身就像是一个聚集索引,我们根据拼音查找目录,然后直接可以找到查询字的页,而字典正文就是按照拼音的顺序进行的排序。从中我们不难总结聚集索引的特点:
如图:
接下来我们简单讨论一下:
1)聚集索引与插入操作
最简单的情况下,插入操作根据索引找到对应的数据页,然后通过挪动已有的记录为新数据腾出空间,最后插入数据。
如果数据页已满,则需要拆分数据页(页拆分是一种耗费资源的操作,一般数据库系统中会有相应的机制要尽量减少页拆分的次数,通常是通过为每页预留空间来实现):
在该使用的数据段(extent)上分配新的数据页,如果数据段已满,则需要分配新段。
调整索引指针,这需要将相应的索引页读入内存并加锁。
大约有一半的数据行被归入新的数据页中。
2)聚集索引与删除操作
删除行将导致其下方的数据行向上移动以填充删除记录造成的空白。
如果删除的行是该数据页中的最后一行,那么该数据页将被回收,相应的索引页中的记录将被删除。如果回收的数据页位于跟该表的其它数据页相同的段上,那么它可能在随后的时间内被利用。如果该数据页是该段的唯一一个数据页,则该段也被回收。
对于数据的删除操作,可能导致索引页中仅有一条记录,这时,该记录可能会被移至邻近的索引页中,原索引页将被回收,即所谓的“索引合并”。
标签:
原文地址:http://www.cnblogs.com/wenBlog/p/4376976.html