Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите синтезировать пример поведения SQL Server при выдаче результатов запроса  [new]
uaggster
Member

Откуда:
Сообщений: 1056
Коллеги, задача вкратце такая:
Необходимо построить синтетический пример, который отражал бы документированное поведение MSSQL.

При выдаче результатов порядок строк в резалтсете определяется самим MSSQL, если он не зафиксирован с помощью Order by.
Необходимо продемонстрировать, что запрос, содержащий несколько Union All будет выводить один и тот же результат в смысле набора данных, но разный в смысле порядка строк от запуска к запуску, или, например, в случае построения некластерного индекса, изменения статистики (... черта лысого, чего угодно).

Т.е. при одном запуске (например):
1 a
2 b
3 c

При другом:
2 b
1 a
3 c

Еще раз - не рандомный Order by, а именно рандомное поведение выборки БЕЗ указанного Order by.
26 фев 14, 14:31    [15632665]     Ответить | Цитировать Сообщить модератору
 Re: Помогите синтезировать пример поведения SQL Server при выдаче результатов запроса  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/articles/mssql/2007/011203clusteredindexscanspart1.shtml
https://www.sql.ru/articles/mssql/2007/011204clusteredindexscanspart2.shtml
https://www.sql.ru/articles/mssql/2007/011501clusteredindexscanspart3.shtml
26 фев 14, 14:35    [15632700]     Ответить | Цитировать Сообщить модератору
 Re: Помогите синтезировать пример поведения SQL Server при выдаче результатов запроса  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
так в доке черным по белому написанно что никто не гарантирует порядок записей без order by, да и гуглиться на раз. А если вся таблица меньше 1 страницы - то вообще результат "порядка" тупо на откуп серверу
26 фев 14, 14:35    [15632701]     Ответить | Цитировать Сообщить модератору
 Re: Помогите синтезировать пример поведения SQL Server при выдаче результатов запроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Такого примера достаточно?

declare @t table (
    id      int             not null    identity 
    , name  varchar (50)    not null    unique
    , primary key (
        id
    )
)


insert @t ( name ) select 'Три'
insert @t ( name ) select 'Два'
insert @t ( name ) select 'Рас'

select * from @t
26 фев 14, 14:38    [15632723]     Ответить | Цитировать Сообщить модератору
 Re: Помогите синтезировать пример поведения SQL Server при выдаче результатов запроса  [new]
uaggster
Member

Откуда:
Сообщений: 1056
Коллеги, :) я это знаю.

Мне нужно продемонстрировать, что union all может склеивать выборку произвольно. Не отсылка к докам, а именно пример такого поведения :)
(Если это возможно)
26 фев 14, 14:44    [15632788]     Ответить | Цитировать Сообщить модератору
 Re: Помогите синтезировать пример поведения SQL Server при выдаче результатов запроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
uaggster
Коллеги, :) я это знаю.

Мне нужно продемонстрировать, что union all может склеивать выборку произвольно. Не отсылка к докам, а именно пример такого поведения :)
(Если это возможно)


if object_id('tempdb..#t') is not null
    drop table #t

create table #t (
    id      int             not null    identity 
    , name  varchar (50)    not null
    , primary key (
        id
    )
)

create index IX__name on #t (name)

insert #t ( name ) select 'Три'
insert #t ( name ) select 'Два'
insert #t ( name ) select 'Рас'

select * from #t union all select * from #t

drop index #t.IX__name

select * from #t union all select * from #t
26 фев 14, 14:50    [15632849]     Ответить | Цитировать Сообщить модератору
 Re: Помогите синтезировать пример поведения SQL Server при выдаче результатов запроса  [new]
uaggster
Member

Откуда:
Сообщений: 1056
Гавриленко Сергей Алексеевич,
О, шикарно! Так просто! Спасибо!
26 фев 14, 14:54    [15632879]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить