一、索引碎片
无论是索引组织表(IOT)还是堆表(HEAP),随着数据的增删改,都会或多或多的产生碎片。碎片的存在,主要对于数据扫描效率有着较大的影响,对于数据查找效率几乎没有影响或者说影响很小,如果想要改善数据查找的效率,进行索引碎片整理并没有什么效果。以下的碎片分类也主要是从数据扫描着眼。
1、内部碎片
内部指的是页内,即页面的空闲空间。其实填充因子就是一种碎片,为了减少页拆分,宁愿适当地去制造这种碎片。但在大量内部碎片一直处于无法被数据填充的情况下,是没有益处的,它会导致扫描过程中读取额外的页面。
对于LOB和ROW_OVERFLOW_DATA页面,这是唯一的碎片形式,因为在这两种列上无法建立B树索引。
2、外部碎片
(1)逻辑碎片
索引叶子节点页的逻辑顺序与物理顺序不一致,比如:有页号1,2的两个页面,此时1页面发生页拆分,这时新申请的页面页号为3,此时逻辑顺序为1-3-2,但物理顺序是1-2-3,1页面没有直接指向磁盘的下一个物理页,这就造成了不一致,即逻辑碎片;
(2)扩展碎片
SQL SERVER通常给表或索引分配新的空间是以EXTENT(区或扩展)的形式,一个区是8