2012-03-01 10 views
1

主キーがDocId、DocStatus、DocSubIdという列の組み合わせである「Docs」という表があります。私は、次のクエリを実行すると個別の列インデックスと結合された列インデックス

今:

select * from Docs where DocId = 200 

を、それは主キーのクラスタ化インデックスを使用して終了しますまたはクエリの上に最適化するために、DOCID上に別のインデックスを作成するために、より高速になります。

答えて

2

既存のクラスタ化インデックスが使用されます。別のインデックスは必要ありません。複合インデックスでは、一番左の列のクエリはインデックスを使用できます。だから、あなたのインデックスのようなクエリに対しても有効です。一番左の列が使用されていないとして一方

SELECT * FROM Docs WHERE DocId = 200 AND DocStatus = 1 

、複合インデックスは、唯一DocStatus上のクエリに対して有効ではありません。

SELECT * FROM Docs WHERE DocStatus = 1 -- Can't use the composite index. 
関連する問題