6

Q1 : SQL Server データベースに外部キー列のインデックスを作成する価値はありますか?

Q2 : SQL Server データベースに 2 つの関連するテーブルがあり、外部キー列にインデックスを作成してパフォーマンスを向上させたい場合、どの列をインデックスに含める必要があり、どの種類のインデックスが最適ですか?

例えば...

Table1

Table1ID int (主キー)

Table2

Table2ID int (主キー)
Table1ID int (外部キー)

..Table1ID だけを使用して Table2 のインデックスを作成するか、主キー (Table2ID) も含める必要がありますか。

Q3 : この例を拡張して、Table1 と Table2 の両方に関連する 3 番目のテーブルを含める場合、列ごとに 1 つのインデックスを作成するか、両方の列で 1 つのインデックスを作成する必要がありますか?

Table3

Table3ID int (主キー)
Table1ID int (外部キー)
Table2ID int (外部キー)

4

2 に答える 2

6

Q1. はい。(定期的に使用されていないことがわかった場合は、後でいつでも削除できます)。

Q2. Table1ID だけで Table2 のインデックスを作成しますか? はい。インデックスの主な用途は、オプティマイザーがこれら 2 つのテーブルを結合するのを支援することであると想定します。(全体的なクエリ ワークロードの一部である他のクエリを満たすのではなく)。

Q3. はい。外部キーを持つ各列には、その親キー テーブルへの個別のインデックスが必要です。

(OLAP データベースではなく OLTP データベースがあることを前提としています)

この投稿では、データベース内の不足しているすべての外部キー インデックスのスクリプトを生成する TSQL を提供します: TSQL: 不足している外部キー インデックスの生成

于 2012-05-10T23:34:44.993 に答える