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

Откуда: Київ
Сообщений: 10428
Делаю эксперименты, вроде всегда гуиды следуют по возрастанию в полях каждой записи
uuid1<uuid2<uuid3<uuid4<uuid5
что собственно и надо

declare @uuids1 TABLE 
(
	uuid1 uniqueidentifier not null default NEWSEQUENTIALID(), 
	uuid2 uniqueidentifier not null default NEWSEQUENTIALID(), 
	uuid3 uniqueidentifier not null default NEWSEQUENTIALID(), 
	uuid4 uniqueidentifier not null default NEWSEQUENTIALID(), 
	uuid5 uniqueidentifier not null default NEWSEQUENTIALID(), 
	n int
)

insert into @uuids1 (n)  
select 1 union all
select 2 union all
select 3

select * from @uuids1 order by n


Но можно ли считать, что так будет всегда?
16 окт 13, 16:46    [14981534]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
Но можно ли считать, что так будет всегда?

Про какую из 3х команд скрипта вы спрашиваете ?
16 окт 13, 16:47    [14981542]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
samoxod
Member

Откуда: Москва
Сообщений: 31
Winnipuh,

After restarting Windows, the GUID can start again from a lower range, but is still globally unique
16 окт 13, 16:55    [14981619]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
Winnipuh
Но можно ли считать, что так будет всегда?
Нет.

ИМХО NEWSEQUENTIALID не гарантирует возрастания, он нужен для оптимизации вставки в индексы. То есть он как правило будет возрастающим, но это не обязательно.

Об это написано в хелпе:

BOL
Создает идентификатор GUID, имеющий значение, большее любого идентификатора GUID, который был прежде создан на указанном компьютере при помощи этой функции с момента запуска Windows. После перезагрузки Windows идентификатор GUID может вновь начинаться с более низкого диапазона
16 окт 13, 17:00    [14981654]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
А что вы не поняли из предыдущей темы ? Зачем задавать опять тот же вопрос ?
16 окт 13, 17:01    [14981667]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Winnipuh,

Порядок следования гуидов, по идее, должен совпадать с порядком следования столбцов. Но закладываться в коде на порядок следования столбцов — это г-код. Всегда возможна ситуация, когда какой-нибудь столбец перенесли в конец таблицы, и порядок следования стал другим.

А зачем вам нужно соотношение "uuid1<uuid2<uuid3<uuid4<uuid5"? Почему недостаточно попарного неравенства гуидов?
16 окт 13, 17:13    [14981759]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
А что вы не поняли из предыдущей темы ? Зачем задавать опять тот же вопрос ?


я всё понял, и вы надеюсь тоже.

Вы разве не видите, что это не тот же вопрос?

Тода еще раз:

всегда ли в этой временной таблице будет выполняться условие для полей в одной записи:

uuid1<uuid2<uuid3<uuid4<uuid5

Для этого надо, чтобы поля заполнялись последовательно, как они объявлены при создании таблицы, а в этом я не уверен, вот и спросил.
16 окт 13, 17:14    [14981764]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
alexeyvg
Winnipuh
Но можно ли считать, что так будет всегда?
Нет.

ИМХО NEWSEQUENTIALID не гарантирует возрастания, он нужен для оптимизации вставки в индексы. То есть он как правило будет возрастающим, но это не обязательно.

Об это написано в хелпе:

BOL
Создает идентификатор GUID, имеющий значение, большее любого идентификатора GUID, который был прежде создан на указанном компьютере при помощи этой функции с момента запуска Windows. После перезагрузки Windows идентификатор GUID может вновь начинаться с более низкого диапазона


верно, но меня интересует в данном примере, во временной таблице, тут рестартов не будет.
16 окт 13, 17:15    [14981782]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гость333
Winnipuh,

Порядок следования гуидов, по идее, должен совпадать с порядком следования столбцов. Но закладываться в коде на порядок следования столбцов — это г-код. Всегда возможна ситуация, когда какой-нибудь столбец перенесли в конец таблицы, и порядок следования стал другим.

А зачем вам нужно соотношение "uuid1<uuid2<uuid3<uuid4<uuid5"? Почему недостаточно попарного неравенства гуидов?


вот, я об этом..

Для генерации гуидов, чтобы их потмо присваивать переменным, колторых может быть >1
Можно, конечно, обойтись так:

declare @t table(uuid uniqueidentifier, int n)

и выбирать последовательно.
16 окт 13, 17:17    [14981798]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Winnipuh,

А, то есть так и останется табличная переменная? Я думал, будет постоянная таблица. Ну тогда можно считать, что uuid1<uuid2<uuid3<uuid4<uuid5.
16 окт 13, 17:24    [14981859]     Ответить | Цитировать Сообщить модератору
 Re: Будет ли всегда порядок в значениях полей?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
Winnipuh
верно, но меня интересует в данном примере, во временной таблице, тут рестартов не будет.
А, в данном примере - да, тогда можно гарантировать, в BOL об этом написано.
16 окт 13, 18:12    [14982159]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить