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