HOME >> Tips >> Microsoft SQL Server

統計情報を更新してクエリのパフォーマンスを改善する

2016/7/2
文書番号:20529

これまで普通に使えていた SQL Server が急に遅くなった、夜間の更新処理に異常に時間がかかるようになった。といったとき、統計情報が古くなっていて実行プランが正しく選択されていないことががあります。

統計情報を最新にすることで正しい実行プランが選択されるようになり、パフォーマンスが改善されることがあります。

【実行方法】

  1. データベース単位で統計情報を更新します。

    全部実行するので時間はかかりますが、何を実行しても遅い場合や定期的に全部キレイにしたい場合などはデータベース単位で実行するといいと思います。
    
    USE [データベース名]; 
    GO 
    
    --統計情報をすべて更新する
    EXEC sp_updatestats; 
    
  2. テーブル単位で統計情報を更新します。

    どのテーブルに対するクエリが遅いかわかっている場合に使用します。
    
    USE [データベース名]; 
    GO 
    
    --テーブルを指定して統計情報を更新する
    UPDATE STATISTICS [テーブル名]; 
    
  3. インデックス単位で統計情報を更新します。

    どのインデックスの統計情報が改善されればいいかわかっている場合に使用します。
    ※テーブル名とインデックス名の間に半角スペースを入れます。
    
    USE [データベース名]; 
    GO 
    
    --インデックスを指定して統計情報を更新する
    UPDATE STATISTICS [テーブル名] [インデックス名]; 
    

【参考情報】

[MSDN] sp_updatestats (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms173804.aspx