玩数据的都知道索引的重要性。索引对数据库引擎快速返回查询结果有巨大作用,是数据库优化的关键手段。然而,当对索引所在的基础数据表进行插入、删除和更新等操作时,索引的逻辑排序和基础表的物理排序可能不匹配,从而产生索引碎片。索引碎片增多会导致查询响应时间变长和查询性能下降。SQL Server 提供了两种修复索引碎片的方法:重新组织索引和重新生成索引。
重新组织索引是对最外层数据页里的数据进行重新排序,并压缩索引页,不会添加额外数据。该过程不会占用很多系统资源,在运行过程中外部进程仍能访问数据表,因此称为联机执行。执行 SQL 语句为:ALTER INDEX 索引名 on 表名 REBUILD。
重新生成索引是删除目标索引并创建一个新索引。旧索引中的碎片将随之删除,新索引的逻辑排序将与对象的物理排序相匹配。整个过程需要删除索引并重新创建,外部进程无法访问数据表,这是一大障碍。执行 SQL 语句为:ALTER INDEX 索引名 on 表名 REBUILD。