我曾在 stackoverflow 上问过一个问题: 大型 SQL Server 数据库超时 PHP Web 应用程序
问题在于,选择前一个日期的查询速度很快,而对于更当前的日期,查询速度很慢。我们通过重新创建索引来修复它,因此它起作用了。有一段时间我认为索引可能已经损坏。
今天问题再次发生(缓慢),并且通过再次重新创建它运行得很快。这是在日期时间类型的日期列上完成的。
是否有特定原因或 SQL Server 2008 R2 已损坏?
我曾在 stackoverflow 上问过一个问题: 大型 SQL Server 数据库超时 PHP Web 应用程序
问题在于,选择前一个日期的查询速度很快,而对于更当前的日期,查询速度很慢。我们通过重新创建索引来修复它,因此它起作用了。有一段时间我认为索引可能已经损坏。
今天问题再次发生(缓慢),并且通过再次重新创建它运行得很快。这是在日期时间类型的日期列上完成的。
是否有特定原因或 SQL Server 2008 R2 已损坏?
尝试使用UPDATE STATISTICS (Transact-SQL)
更新表或索引视图的查询优化统计信息。默认情况下,查询优化器已根据需要更新统计信息以改进查询计划;在某些情况下,您可以通过使用 UPDATE STATISTICS 或存储过程 sp_updatestats比默认更新更频繁地更新统计信息来提高查询性能。
UPDATE STATISTICS table_or_indexed_view_name
[
{
{ index_or_statistics__name }
| ( { index_or_statistics_name } [ ,...n ] )
}
]
[ WITH
[
FULLSCAN
| SAMPLE number { PERCENT | ROWS }
| RESAMPLE
| <update_stats_stream_option> [ ,...n ]
]
[ [ , ] [ ALL | COLUMNS | INDEX ]
[ [ , ] NORECOMPUTE ]
] ;
<update_stats_stream_option> ::=
[ STATS_STREAM = stats_stream ]
[ ROWCOUNT = numeric_constant ]
[ PAGECOUNT = numeric_contant ]
它当然没有损坏。这永远不会发生。它可能是零散的或有很多浪费的空间。这很正常。这是由于某些写入模式而发生的。
重建是一个很好的对策。您可以尝试重新组织作为替代方案。