У меня есть очень простая таблица, в которой хранятся заголовки для людей («Мистер», «Миссис» и т. Д.). Вот краткая версия того, что я делаю (в этом примере используется временная таблица, но результаты те же):
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 использует некластеризованный индекс по кластеризованному первичному ключу . Я предположение, это объясняет, почему результаты возвращаются в таком порядке, но я не знаю, почему это происходит.
Есть идеи? И что еще более важно, есть ли способ остановить такое поведение? Я хочу, чтобы строки возвращались в том порядке, в котором они были вставлены.
Спасибо!