0

私はstackoverflowについて質問しました: 大規模なSQL ServerデータベースがPHP Webアプリケーションをタイムアウトさせました

問題は、以前の日付が選択された場合はクエリが高速であり、より新しい日付が選択された場合は低速であるということでした。インデックスを再作成することで修正したため、機能しました。しばらくの間、インデックスが壊れているのではないかと考えていました。

今日、問題が再び(遅い)発生し、再作成することで高速に実行されました。これは、日時型の日付列で行われました。

これには特定の理由がありますか、それとも SQL Server 2008 R2 が破損していますか?

4

2 に答える 2

1

それは確かに破損していません。これは決して起こりません。断片化されているか、無駄なスペースがたくさんある可能性があります。これは正常です。これは、特定の書き込みパターンが原因で発生します。

再構築は良い対策です。別の方法として再編成を試すことができます。

于 2012-10-12T13:10:01.820 に答える
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 に答える