web-dev-qa-db-ja.com

SQL Serverのパフォーマンスを向上させるために、2つ以上のテーブルのJOIN結果にインデックスを付ける方法

私はインデックス作成の初心者であり、インデックス作成の基本について学びました。対応するテーブルのインデックス部分内にある主キー制約のデフォルトのクラスター化インデックスを見つけることができますが、外部キー制約を作成した後は見つかりません。

これで、パフォーマンスを向上させるためにインデックス付けを実装する必要があるという要件がありました。 JOIN結果のパフォーマンスを向上させるために、外部キーのインデックス付けについて読みました。

外部キー列を追加の非クラスター化インデックスに追加する必要がありますか、それとも外部キーにデフォルトのインデックスがありますか?

SQLテーブル構造が次のようになり、JOIN query with WHERE句を使用して( t1_col

               table1                       table2
               ------                       ------
               t1_col1(pk)                  t2_col1(pk)
               t1_col2                      t2_col2
               t1_col3                      t2_col3
               t1_col4                      t2_col4
               t2_col1(FK)
9
Harun

外部キーには、デフォルトではインデックスがありません。作成する必要があります。

この場合は、どちらかをお勧めします。 2つのカラムの相対的な選択性に依存します

CREATE INDEX IX_table2fk ON
              table1 (t2_col1, t1_col3)
              INCLUDE (any columns needed for the query)

OR

CREATE INDEX IX_table2fk ON
              table1 (t1_col3, t2_col1)
              INCLUDE (any columns needed for the query)

INCLUDEは、キー/ブックマークの検索を回避するために インデックスカバー を作成します

13
gbn