我正在使用一个包含大约200条记录的表。它以前没有索引或约束。我在一个数据类型为VARCHAR(20)
的唯一列上添加了PK / Clustered索引。
创建索引后,在任何更新/插入/删除操作之前,碎片级别已达到50%。知道为什么吗? (我用表格认识到这个小指数更像是形式,但每一点都有帮助。)
答案 0 :(得分:3)
SQL Server不应用任何智能来分配页面。表格可能是1-10页,这些页面恰好分布在一些自由空间的孔中。 SQL Server无法避免这种情况。它不会尝试并置相关页面。
碎片几乎与小表无关,因为它们通常最终被缓存。永远不会再从磁盘读取这些页面。
忽略这一点。
只是为了好玩,您可以通过将索引重建为具有MAXDOP = 1
的新文件组来避免这种情况。 FG是空的,因此没有自由空洞。