轻松修复碎片堆索引的最佳选择是什么?

1 performance sql-server sql-server-2008-r2 sql-server-2012

我在这些服务器上有 SQL Server 2008 R2 SP2 和 SQL Server 2012 SP2。

我有一个数据库,其中有很多堆索引超过 90% 的碎片。

轻松修复这些堆索引的最佳选择是什么?

Ken*_*her 6

假设您使用的是 SQL Server(因为 RDBMS 在这里很重要),您可以执行以下操作

ALTER TABLE tablename REBUILD
Run Code Online (Sandbox Code Playgroud)

话虽如此,您可以阅读Paul Randal 的这篇文章,了解为什么不应该这样做。除非您将您的表用作临时表,您希望在其中快速导入但稍后清理该表,否则您可能希望在您的表上放置一个聚集索引。在这一点上,它不会是一个堆,你有更多的选择来处理碎片。

你通常希望你的 CI 很小,不变并且不断增加(独特是好的,但不是必需的)。不变和不断增加将最大限度地减少未来的任何碎片化。