SQL Server 2005 では、クエリ アナライザーから、クラスター化インデックスが既にあるテーブルのプライマリ ID 列に非クラスター化インデックスを作成するように何度も指示されました。この推奨事項に従った後、クエリ実行プランは、クエリが高速になるはずであると報告します。
同じ列 (同じ並べ替え順序) の非クラスター化インデックスがクラスター化インデックスよりも高速なのはなぜですか?
SQL Server 2005 では、クエリ アナライザーから、クラスター化インデックスが既にあるテーブルのプライマリ ID 列に非クラスター化インデックスを作成するように何度も指示されました。この推奨事項に従った後、クエリ実行プランは、クエリが高速になるはずであると報告します。
同じ列 (同じ並べ替え順序) の非クラスター化インデックスがクラスター化インデックスよりも高速なのはなぜですか?
A clustered index has all the data for the table while a non clustered index only has the column + the location of the clustered index or the row if it is on a heap (a table without a clustered index). So if you do a count(column) and that column is indexed with a non clustered index SQL server only has to scan the non clustered index which is faster than the clustered index because more will fit on 8K pages
たとえば、特定の ID を持つ行が存在するかどうかを確認するだけの場合など、完全な行データが必要ない場合は、より高速になると思います。その場合、クラスター化されたインデックスはかなり大きくなりますが、小さな「1列」のインデックスははるかにスリムになります。
通常、クラスター化インデックスの方が高速ですが、クラスター化インデックスは 1 つしか持てません。したがって、テーブルの別の列にクラスター化インデックスが既にある場合は、非クラスター化インデックスが最適です。