テーブルを作成しました
create table #temp(a int, b int, c int)
このテーブルには 2 つのインデックスがあります。
- c 上の非クラスタ化非一意インデックス
- 上のクラスター化インデックス
次のクエリを実行しようとすると:
select b from #temp where c = 3
システムがインデックス スキャンを行っていることがわかります。非クラスター化インデックスにはキー値として b がないため、これで問題ありません。したがって、列 a からインデックス スキャンを実行します。
しかし、以下のクエリを実行しようとすると:-
select b from #temp where c= 3 and a = 3
実行計画にはインデックス シークしかないことがわかります。スキャンなし。何故ですか?
クラスター化インデックスも非クラスター化インデックスも、列の 1 つとして b として使用されませんか?
インデックススキャンを期待していました。
どうか明らかにしてください