0

SQLテーブルEmployerを考えてみましょう。2列または複数のインデックスのSQL - 1インデックス

列A - (int)一意のID列。 where句の一部としてselectクエリでは使用されません。

列B - (int)一意でない列。 where句の一部としてselectクエリで頻繁に使用されます。低メンテナンスで良好な性能を達成するために、データベーステーブルをdeigningための優れている指標の下の選択肢の

1)1列B

上のクラスタ化された、ユニークなプライマリ列Aのキーと1非クラスタ化インデックス

OR

2)1クラスタ化され、列Bに固有の主キー(複合主キー)

OR

3)列Aのクラスター化されていない一意の主キー1列Bの1クラスター化インデックス

他の提案も歓迎されます。事前に感謝

+0

'Where'句では列Aを使用しますか。はいの場合は、2番目のインデックスは役に立ちません。インデックスは複数の列で順序付けが重要です。 –

+0

どのようなRDBMですか?私は、詳細のいくつかはベンダー固有のものだと思う。 –

+0

列Aはwhere句の一部として使用されません –

答えて

0

オプション1に移動します。
プライマリキーを作成するときは、常に最短の列を目指してください。理由は、この列が他のすべてのインデックスで使用されるということです。また、アイデンティティとは、無作為に生成された価値を意味するものではありません。

+0

ありがとうございます。はい、それは順次インクリメントされます。オプション3はどうですか? (何度か編集された)。 –

+0

通常、クラスタ化インデックスはID列に作成されます。理想的にはコラムでは、それはユニークです。別のテーブルを作成して従業員と言うと、雇用者テーブルのID列を参照する可能性が高くなります。また、インデックスをクラスタ化しているため、特定の従業員のすべての雇用主データにすばやくアクセスできます。クラスタードインデックスは、データがその列に従って物理的にソートされることを意味します。 –

0

最初に選択すると、クラスタ化され、コンバージするのが難しいため、コンポジットなので大きなスペースが2番目に選択されます。最初に選択するには、小さなインデックスを持ち、簡単に同行することができます。

関連する問題