私はインデックスを調査しており、多くの記事を読んでおり、専門家のアドバイスが必要です。警告として、インデックスフィールドは私にはかなり新しく、少し読んでも紛らわしいです!SQL Server 2005 - updt_tmstmpフィールドのインデックス
簡略化するために、guid(トランザクションID)、イベントID、およびupdt_tmstmp(この質問には重要ではありませんが他の多くのフィールドがあります)テーブルを持っています。
私のPKはtransaction_idとevent_idであり、テーブルはこれらのキーによって順序付けられています。 transaction_idはguidであるため、updt_tmstmpフィールドは非常にランダム化されています。テーブルが600万レコードに増加したため、クエリが遅くなりました。私の考えは、updt_tmstmpフィールドにインデックスを追加することでした。私たちの抜粋はテーブル上で頻繁に検索し、過去24時間に更新されたtransaction_idを探します。クエリは、更新されたレコードを見つけるためにテーブル全体をスキャンしています。平均時間は1分
詳細電流: テーブルサイズ6.2万レコード インデックス:しようとしましたTRANSACTION_ID +のevent_id(クラスタ化)
詳細: 追加インデックス:updt_tmstmp(非ユニークな、非クラスタ)
この更新プログラムを実行してクエリを実行すると、約10%改善され、Explainプランはインデックスをスキャンしていることを示しています。私はこれより少し良いパフォーマンスを期待していました。私のupdt_tmstmpは一意であることが保証されていません(私はこれを行うためにアプリケーションプログラマーを責めます:))。
これにアクセスするために使用しているクエリは、標準のstart_time - end_timeです。 updt_tmstmp> = @start_timeとupdt_tmstmp < @end_time
おかげさまでありがとうございました!
クリス