none
元のPLANに戻すには RRS feed

  • 質問

  •  

    お世話になります。

     


    SQL Server 2005で非常に遅いクエリをデータベースチューニングアドバイザでチューニングしました。
    指示通りに統計やindexを作成したところ、かなりの改善がみられました。(5時間→20分)

    その後、統計のメンテナンスを実施したところ元々の遅いPLANに戻ってしまいました。
    一度設定した統計・indexを全部削除して再作成しましたが同じPLANになりません。
    また再度チューニングアドバイザを利用しましたが速いPLANを提示してくれません。
    元のPLANに戻す方法があったら教えてください。

     

    ・速かった時のPLANの図(推定実行プランの表示で表示されるもの)は保存してあります。
      ・Clustered Index Insertという箇所で遅くなっているようです。

    2007年4月26日 6:18

すべての返信

  • インデックスのフラグメンテーションではないですか?

    ALTER INDEX でフラグメンテーションの解消と、統計情報の更新をデータベース全体にかけるなど。

    詳しくは BOL を参照してください。

     

    統計情報の更新したときにはデータが大量に増えていたりしませんでしたか?

    できれば論理 CPU 数分のデータファイルを tempdb とユーザデータベースに施して、クラスタ化インデックスを GUID のような不定期になるようなものにして、I/O 分散させて高速化を図るということもありだと思います。

    クラスタ化インデックスはデータの並び順を保証するので、クラスタ化インデックスを設定した Column に途中の値を挿入するとフラグメンテーションが発生してどうしようもない状況になります。

    定期的にインデックスのフラグメンテーションの解消をする必要があるでしょう。

    ただ、今回は再作成しているということなので、違うかも知れませんが、もしクラスタ化インデックスを主キーにしてあって、再作成していないのであれば、フラグメンテーションしている可能性がありますので解消してみてください。

    最後に、できれば SQL Server 2005 の Service Pack と HotFix の適用状況も書いてください。場合によってはバグかもしれないので。

    2007年4月26日 7:00