Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server MS SQL索引重建修复了超时_Sql Server_Sql Server 2008_Indexing - Fatal编程技术网

Sql server MS SQL索引重建修复了超时

Sql server MS SQL索引重建修复了超时,sql-server,sql-server-2008,indexing,Sql Server,Sql Server 2008,Indexing,我们有一个MS SQL查询,它在连接方面相当复杂。它的目的是搜索特定类型的实体。我们最近花了一些时间对其进行优化并设置正确的索引 尽管在某些时间点(没有注意到任何规则,因此看起来是任意的),web应用程序在使用此查询时开始超时。然后,我们可以进入数据库,在SQL中包含的两个表上重建索引,它会恢复正常。。。这种情况偶尔发生 现在请原谅我的无知,MSSQL是否应该在最佳时间重建索引本身? 否则,一旦达到某个碎片级别,我们是否需要安排索引维护运行? 请随意忽略我的问题,并引导我走向正确的方向 提前感谢

我们有一个MS SQL查询,它在连接方面相当复杂。它的目的是搜索特定类型的实体。我们最近花了一些时间对其进行优化并设置正确的索引

尽管在某些时间点(没有注意到任何规则,因此看起来是任意的),web应用程序在使用此查询时开始超时。然后,我们可以进入数据库,在SQL中包含的两个表上重建索引,它会恢复正常。。。这种情况偶尔发生


现在请原谅我的无知,MSSQL是否应该在最佳时间重建索引本身? 否则,一旦达到某个碎片级别,我们是否需要安排索引维护运行? 请随意忽略我的问题,并引导我走向正确的方向


提前感谢。

生产系统应该有定期的统计维护,可能还有一些不太频繁的索引维护

由于SQL Server(目前)没有为您提供现成的解决方案,请实现。DBA使用这些

我过去每周重建索引,但现在更喜欢每晚更新统计数据,并执行不太频繁的索引重建


我每周重建一次所有碎片索引(>50%)和一个夜间作业(如果需要),以维护大量使用(并大量插入)的表。所有碎片索引(>50%)和一个夜间作业(如果需要)以维护大量使用(并大量插入)的表。

可能会关闭表统计信息?当索引字段具有“扭曲”的值分布时(比如50%的记录具有相同的值,而其他50%的记录都不同),可能会发生这种情况,并且添加记录不会遵循相同的模式。重建索引会重新创建统计信息-但更简单的方法是“使用fullscan更新统计信息mytable”。SQL server本身会自动更新表统计信息(如果未禁用),但不会使用所有记录进行采样;此“fullscan”提示强制对所有数据进行采样。下次出现问题时,我将尝试只运行
updatestatistics mytable
。或者有没有其他方法来分析表的统计数据是否出现问题,例如日志?请查看优秀的索引维护文章,其内容是“MSSQL是否应该在最佳时刻重建索引本身?”——它没有。它根据启发式阈值自动更新统计信息。你需要执行一个维护计划(标准DBA面包黄油)@MitchWheat,有没有办法知道(在某些时间点)应该执行更新统计数据?抱歉,如果这听起来像是一个完全新手的问题