2017-03-20 5 views
0

過去2か月間に自分のDBにインデックスを作成しました。すべてうまく動作します。しかし、今ではそれらのインデックスをUAT ENVに移動する必要があります。私は作成したインデックスを追跡しました。しかし、私は何も見逃していないことを確認したい。過去2か月間にクエリを使用して作成されたインデックスを確認するにはどうすればよいですか?SQL Serverで過去2か月間にDBで作成されたインデックスへの方法

+4

ここで最大の問題は、 "私が作成したインデックスを追跡していませんでした"。この種のことは、技術的な仕事をしている人にとっては非常に重要です。クエリを使用してこれを実行して、インデックスの実動リストにないすべてのインデックスを見つけることができます。しかし、これら2つのサーバーの間にリンクサーバーをセットアップしていますか?これに対する答えは次のステップが何であるかを決めるでしょう。 –

+0

@SeanLange - 私はリンクサーバーを持っていません。具体的にあなたの質問に答えるために、実際に私は追跡しました。私はちょうど私が何も見逃していないことを確認したい。パフォーマンスの最適化の一環として、いくつかのインデックスを作成したり、ドロップなどしています。私が欠けていないことを確認したいだけです。私は質問をうまく改め直すべきだったかもしれない。 – SaiBand

+0

@SeanLange - 私は質問を言い換えました。 – SaiBand

答えて

1

おそらく必要なのは、カタログビューを使用してデータベースのインデックスをチェックすることです。

SELECT 
    t.name AS TableName, 
    ind.name AS IndexName, 
    col.name AS ColumnName, 
    STATS_DATE(t.object_id,ind.index_id) 
FROM sys.indexes ind 
INNER JOIN sys.index_columns ic ON ind.object_id = ic.object_id and ind.index_id = ic.index_id 
INNER JOIN sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id 
INNER JOIN sys.tables t ON ind.object_id = t.object_id 
WHERE STATS_DATE(t.object_id,ind.index_id) > DATEADD(mm,-2,GETDATE()) 
ORDER BY TableName, IndexName, ColumnName 

データベースで実行することを忘れないでください。インデックスを確認する必要があります。マスターではありません。

+1

これらのDMVの作成日は、索引が作成されている表の作成日に関係します。 – RexMaison

+1

クエリを編集した後、インデックスの統計に基づいて日付を返します。それは100%正確ではありませんが、それは近いです。 – asemprini87

+2

私はそれがインデックスのリストを絞り込むことに同意しますが、これは過去2ヶ月間に統計が更新されたインデックスを返します。 – RexMaison

1

SQL Serverでは、DMVのインデックスのインデックス作成情報は保持されません。これは照会できる情報ではありません。

この情報は、PK、一意のインデックスまたは一意の制約で取得できます。

このトピックに関するいくつかの良い情報については、Kendra Littleのブログhereを参照してください。ケンドラのポストから

しかし、あなたは主キー、ユニークインデックス、またはユニーク制約の作成日を探していない場合、あなたは運の出ています。

0

ありがとうございました。過去2ヶ月間に作成されたインデックスを見つける良い方法はありません。最良の方法は、索引を表にロードし、それらをDEV索引と比較することです。

関連する問題