私は実行計画にやや慣れていません。実際のデータ行はインデックス ツリーのリーフ レベルに含まれているのに対し、非クラスター化インデックスにはインデックス付き列の値と残りの行データの場所へのポインターのみが含まれているため、クラスター化インデックスは非常に高速であると常に理解しています。したがって、クラスタ化されていない方がクラスタ化されているよりも多くの IO があります。
これをテストするために、EmployeeID
(最初の列) を主キーとする 1,000,000 レコード テーブルを使用し、同じフィールドに非クラスター化インデックスも追加しました。次に、クエリ ヒントを使用して、使用されている各インデックスの結果を比較しました。
Select EmployeeID from Employees with(index(PK_EmployeeID))
go
select EmloyeeID from Employees with(index(IX_EmployeeID))
go
結果は、クラスター化されていない場合よりもクラスター化されている場合の方が、IO とクエリのコストが (バッチと比較して) 多いことを示しています。誰かがこれを説明してもらえますか?