【问题标题】:Column index not updating in SQL Server 2008SQL Server 2008 中的列索引未更新
【发布时间】:2012-10-03 07:15:51
【问题描述】:

我在 stackoverflow 上问过一个问题: Large SQL Server database timing out PHP web application

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

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

这是有特定原因还是 SQL Server 2008 R2 已损坏?

【问题讨论】:

  • 你能发布索引的代码吗?
  • 索引需要维护 - 您是否制定了维护计划,例如每晚重建索引及其统计信息?
  • 我一直以为它会自动更新。我想我需要再检查一次。

标签: performance indexing sql-server-2008-r2


【解决方案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 ]

【讨论】:

    【解决方案2】:

    它肯定没有损坏。这永远不会发生。它可能是零散的或有很多浪费的空间。这个是正常的。发生这种情况是因为某些写入模式。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      相关资源
      最近更新 更多