私は人々のタイトル(「Mr」、「Mrs」など)を格納する非常に単純なテーブルを持っています。これが私がやっていることの簡単なバージョンです(この例では一時テーブルを使用していますが、結果は同じです):
create table #titles (
t_id tinyint not null identity(1, 1),
title varchar(20) not null,
constraint pk_titles primary key clustered (t_id),
constraint ux_titles unique nonclustered (title)
)
go
insert #titles values ('Mr')
insert #titles values ('Mrs')
insert #titles values ('Miss')
select * from #titles
drop table #titles
テーブルの主キーはクラスター化され (例のために明示的に)、タイトル列にはクラスター化されていない一意性制約があることに注意してください。
選択操作の結果は次のとおりです。
t_id title
---- --------------------
3 Miss
1 Mr
2 Mrs
実行計画を見ると、SQL はクラスター化された主キーよりも非クラスター化インデックスを使用しています。結果がこの順序で返される理由はこれで説明できると思いますが、なぜこれが行われるのかはわかりません。
何か案は?さらに重要なことに、この動作を止める方法はありますか? 行が挿入された順序で返されるようにします。
ありがとう!