SQL Server 2005 索引管理与优化全解析
1. 索引操作中的空间计算
在创建新的聚集索引时,现有的非聚集索引必须重建,因为叶节点现在必须使用聚集键而不是堆行指示器来查找数据。例如,若现有非聚集索引有 64,000 行,每行 100 字节,可通过公式“Rows in Index * Average Row Length in bytes / Current Fill Factor Percentage”计算其大小,假设填充因子为 80%,则该索引大小约为 7.62939453MB。
若新聚集键大小为 36 字节,可通过公式“Rows in Index * (Average Row Length in bytes – 8 + Clustered Key Size in bytes) / Fill Factor Percentage”估算重建后非聚集索引所需空间,这里约为 9.765625MB。此例中,源结构总计 78MB(70MB 堆 + 8MB 非聚集索引),目标结构总计 98MB(88MB 聚集 + 10MB 非聚集索引),完成索引操作需 98MB 可用空间,操作完成后可回收 78MB 空间。
若启用在 tempdb 中对索引进行排序的选项,tempdb 必须有足够空间容纳源表,此例中源表约 70MB。若排序操作可在内存中执行,则忽略在 tempdb 中排序的选项。
2. SQL Server 2005 索引管理方式
SQL Server 2005 索引管理可通过 SQL Server Management Studio 界面或 Transact - SQL (TSQL) 代码实现。执行索引管理时,了解不同版本 SQL Se