2008-09-03 17 views
8

SQL Server 2005では、クエリアナライザは、クラスタ化インデックスを既に持っているテーブルのプライマリID列に非クラスタ化インデックスを作成することが何回も教えてくれました。この推奨に従うと、クエリ実行プランはクエリがより高速になるように報告します。クラスタ化されたインデックス列の非クラスタ化インデックスはパフォーマンスを向上させますか?

同じ列の非クラスタ化インデックス(同じソート順)がクラスタ化インデックスより高速なのはなぜですか?

答えて

-1

一般に、クラスタ化インデックスは高速ですが、クラスタ化インデックスは1つしか作成できません。したがって、テーブルにすでにのクラスタ化インデックスが別の列にある場合は、クラスタ化されていないインデックスが最適です。

2

たとえば、特定のIDを持つ行が存在するかどうかを確認している場合など、完全な行データが必要ない場合は、より高速になると思います。次に、クラスタード・インデックスはかなり大きくなりますが、小さな「1カラム」インデックスははるかに細くなります。

16

クラスタ化インデックスにはテーブルのすべてのデータが含まれ、非クラスタ化インデックスは列+クラスタ化インデックスの場所またはヒープ上にある場合の行(クラスタ化インデックスがないテーブル)のみを持ちます。したがって、カウント(列)を行い、その列が非クラスター化インデックスでインデックス化されている場合、SQLサーバーは、8Kページに多くが収まるため、クラスタ化インデックスよりも高速な非クラスター化インデックスのみをスキャンする必要があります。

関連する問題