2016-08-05 10 views
0

重複していると申し訳ありませんが、質問を入力する方法がわからないため、Googleが回答を見つけることができます。SQL Serverでは、インデックスの行数を減らすとパフォーマンスが向上しますか?

テーブルTに10列(a,b,c...j)のテーブルがあるとします。

私は、f = 1 eのときはc、合計d、合計の場合fはa = 22、bは(x、y)の間のbをカウントするクエリを持っています。私はT (a, b) include (c...j)に非クラスタ化インデックスname_ab2を持っている場合、SQL Serverが使用

インデックスは、パフォーマンスの低下する

T (a, b) include (c, d, e, f)上の非クラスタ化インデックス name_abのですか?

私は巨大なテーブル上の非常に異なるクエリとレポートがたくさんあると私は各クエリ のインデックスを作成するのではなく、テーブル全体

のインデックスを持ってしたくないので、私は求めている理由は、

ありがとう

+4

だけ持つ* 1 *とインデックス**すべての**の列が含ま** **あらゆる可能性をスピードアップしませんクエリ!まったく逆のため......レポートがたくさんある場合は、**必要な要件を慎重に分析してから、最良のインデックスを見つける必要があります。 * **ほとんどの場合、**ヘルプはありません! –

+1

あなたのSQL Serverのバージョンは2012年であれば、すべての列(一部のデータ型を除く)を含む列インデックスを使用でき、この種の分析(集計、レポート作成)には非常に適しています。 – thotwielder

+0

私が誤解していない限り、marc_sの場合、私のインデックスは列aと列bにのみあります:msdn.microsoft.com/en-us/library/ms190806.aspxインデックスを付けてはいけません。thotwielder、SQL Server 2012、ありがとう、それに気をつけてください – Thalden

答えて

0

SQLのデータベースエンジンチューニングアドバイザを使用して、テーブルにヒットしたクエリの良好なインデックスを判断することをお勧めします。

通常、すでに述べた他の半分と同じように、オーバーインデックスするのは賢明ではなく、いくつかの追加のインデックスをサンプリングして、全体の増加を判断します。 2番目の懸案事項は、大きなテーブルのインデックスが、フィルファクタが低くなるとディスクスペースを大量に消費するためです。考慮する必要があるかもしれません。

個人的に私の大きなテーブル(1つのテーブルに1TBより大きい - すべてのトランザクション)を月ごとに分割して設定します。私は毎月新しいパーティションを設定するので、where句の日付を含むクエリは、1か月に必要な対応するパーティションにのみヒットします。

思っただけの食べ物。

+0

チューニングアドバイザーとパーティションを調べます。 しかし、私の質問は、インデックスではなくインクルードにあります。 インデックスの数は同じですが、インクルードの変更数が増えるとパフォーマンスはどうなりますか? – Thalden

0

多くの研究の後に。 [商品](ID、日付) としてON非クラスタ化インデックスCategory_iddate_1 を作成する(A、B) GO と [商品](ID、日付) としてON非クラスタ化インデックスCategory_iddate_2 (A、B、Cを作成しますd) GO 違いは、abcdがすべて自分の列である場合、そのインデックスはクラスタ化インデックスと同等であることです。あなたが挿入し、私はこれが は良い一日を役に立てば幸いたくさん を削除いけない場合 クラスタ化インデックスは良いです

関連する問題