2009-04-12 8 views

答えて

0

「必要」は、クラスタ化インデックスに含まれていない列の検索を高速化することです。

2

最適なパフォーマンスを得るには、クエリで使用されるすべての組み合わせに対してインデックスを作成する必要があります。たとえば、このような選択がある場合。

SELECT * 
FROM MyTable 
WHERE Col_1 = @SomeValue AND 
     Col_2 = @SomeOtherValue 

次にあなたがCOL_1とCol_2でクラスタ化インデックスを行う必要があります。

SELECT * 
FROM MyTable 
WHERE Col_1 = @SomeValue 

は次に、あなただけのCOL_1とインデックスを持つ必要があります。一方 は、あなただけのような柱の一つを調べ、追加のクエリを持っている場合。 これで2つのインデックスになります。 1つはCol_1とCol_2、もう1つはCol_1だけです。

+0

この場合、2つのインデックスは必要ありません.Col_1とCol_2にインデックスを付けるには十分です。同一のインデックスがCol_1値のルックアップにも有効に使用されます。 – Arvo

0

クラスタ化されたインデックスは、複数の列にわたってインデックスと混同しないでください。それは同じことではありません。

Here'sクラスタ化されたインデックスと非クラスタ化されたインデックスを説明する優れた記事です。

mssqlサーバーでは、テーブルごとに1つのクラスタ化インデックスしか作成できません。ほとんどの場合、プライマリキーです。クラスタード・インデックスはテーブルに「添付」されているため、「select」節にある他のデータ要素を取得するためにテーブルに戻る必要はありません。クラスタ化されていない索引は添付されていませんが、残りのすべてのデータを含む表の行への参照が戻されます。

関連する問題