私はこのuse-the-index-luke.comを読んでいて、インデックスのしくみを詳しく説明しています。インデックスの順序は非常に重要であり、クエリを高速化するにはwhere句の列がインデックス内の列と同じであることを、この担当者が繰り返し述べていることの1つ。今日、私はこの理論を裏付けるだけで、SQL Server 2008にテーブル(id int、name nvarchar(100))を作成しました。そこに5000行を挿入し、インデックスを作成しました
create index abc on test (name, id )
そしてクエリを発射しました
select ID, name
from test
where ID = 10
and name = '10'
全テーブルスキャンの後にクエリプランの選択が続くことを期待していましたが、驚いたことに、プランの出力は選択に続くインデックススキャンでした。
それで、私の質問は、Where句の列の順序が重要ですか、それともSQL Serverがインデックスの定義に従って列を再配置するのですか?
ありがとう!!