0

我曾在 stackoverflow 上问过一个问题: 大型 SQL Server 数据库超时 PHP Web 应用程序

问题在于,选择前一个日期的查询速度很快,而对于更当前的日期,查询速度很慢。我们通过重新创建索引来修复它,因此它起作用了。有一段时间我认为索引可能已经损坏。

今天问题再次发生(缓慢),并且通过再次重新创建它运行得很快。这是在日期时间类型的日期列上完成的。

是否有特定原因或 SQL Server 2008 R2 已损坏?

4

2 回答 2

1

尝试使用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 ]
于 2012-10-12T13:09:29.143 回答
1

它当然没有损坏。这永远不会发生。它可能是零散的或有很多浪费的空间。这很正常。这是由于某些写入模式而发生的。

重建是一个很好的对策。您可以尝试重新组织作为替代方案。

于 2012-10-12T13:10:01.820 回答