2016-11-16 97 views
1

我们计划在我们的应用程序中定期运行索引重建/重组。重组/重建单索引与所有表索引

我们知道,当索引碎片超过5%时,我们应该重新组织,当它超过30%时重建。

我们只是想知道我们是否应重组/重建:

这是在桌子上零散
  • 只有特定的索引(ALTER INDEX {名} ON ...)
  • 在表上的所有索引( ALTER INDEX ALL ON ...)如果至少存在一个索引碎片

您会发现哪种方法更好?

+1

拿到剧本,我认为第一个选项是更好 –

+0

谢谢@Prdp。你能解释一下为什么?从逻辑的角度来看,对我来说似乎也更好(只重组发生了什么问题,并让其他人保持原样),但使用一些MS最佳实践来确认它会很好。 – jabko87

回答

1

我不知道为什么SQL Server没有内置此类操作的任何内容,但我最近使用了Ola Hallengren编写的脚本进行索引维护,我不得不说它是最漂亮的一段代码I已经碰到,也是免费的。

脚本有一些很酷的功能。

  1. 它与SQL Server的所有版本兼容的2005年,2008年,2012年,2014年和2016年

  2. 它reorgs索引时,碎片是低于30%,否则重建索引。您也可以通过参数更改此阈值。

  3. 它检查SQL Server许可证,如果是Enterprise,它将在线重建索引,否则它会脱机重建索引。

我的意思是名单继续,其绝对值得检查。

你可以从这里SQL Server Index and Statistics Maintenance" by Ola Hallengren"