我们有一个MS SQL查询,在连接方面相当复杂。它的目的是搜索特定类型的实体。我们最近花了一些时间来优化它并设置正确的索引。
虽然在某些时间点(没有注意到任何规则,因此看似随意),Web应用程序在使用此查询时会开始超时。然后我们可以进入数据库并重新构建SQL中包含的2个表的索引,它会恢复正常......偶尔会发生这种情况。
现在请原谅我的无知,MSSQL是否应该在最佳时刻重建索引? 否则,一旦我们达到某种程度的碎片,我们是否需要安排索引维护才能运行? 请随意忽略我的问题并引导我朝着正确的方向前进。
提前致谢。
答案 0 :(得分:0)
生产系统应该有定期的统计维护,可能还有一些不太频繁的索引维护。
由于SQL Server没有(当前)为您开箱即用,请实施Ola Hallegren's Index and Statistics Maintenance scripts。 DBA使用这些。
我曾经每周重建索引,但现在更喜欢每晚更新统计信息,并且执行频率较低的索引重建。
我实施每周重建所有碎片索引(> 50%)和夜间作业(如果需要)以维护大量使用(并严重插入)表格。所有碎片索引(> 50%)和夜间工作(如果需要)保持大量使用(并严重插入)表格。