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

Откуда: Moscow
Сообщений: 23
Коллеги, подскажите...

Есть таблица, один из столбцов которой имеет тип uniqueidentifier.
Если значение не задано, то лучше в каком виде хранить пустое значение, в виде null или 00000000-0000-0000-0000-000000000000?

При условии что эта таблица связана с другой, через этот столбец.
17 окт 19, 17:39    [21996802]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
Remind
Member

Откуда: UK
Сообщений: 523
NULL
17 окт 19, 17:46    [21996805]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
Владислав Колосов
Member

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

если значение неизвестно, то надо и хранить "неизвестно", т.е. NULL.
17 окт 19, 18:09    [21996832]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
Konstantin_Patrushev
Member

Откуда: Moscow
Сообщений: 23
Владислав Колосов,

На производительность (индексы) это влияет?
17 окт 19, 19:20    [21996891]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 308
Konstantin_Patrushev,

Был на демо у этого чувака, поэтому найти статью оказалось просто:
https://sqlsunday.com/2019/01/03/nullable-columns-and-performance/
18 окт 19, 11:00    [21997202]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
fkthat
Member

Откуда:
Сообщений: 2965
Не отношусь к противникам NULL, но, в случае GUID лично я бы предпочел бы "empty guid" ("все нули"), т.к. это специальное зарезервированное значение, типа, как "NULL среди GUIDов". Результат тот же, но при этом есть подстраховка от нежданки наподобии:
SELECT * FROM T WHERE MyGuid = MyGuid
18 окт 19, 11:18    [21997223]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
fkthat
Member

Откуда:
Сообщений: 2965
RFC 4122
The nil UUID is special form of UUID that is specified to have all 128 bits set to zero.
18 окт 19, 11:21    [21997228]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
L_argo
Member

Откуда:
Сообщений: 1209
автор
случае GUID лично я бы предпочел бы "empty guid" ("все нули"), т.к. это специальное зарезервированное значение, типа, как "NULL среди GUIDов". Результат тот же
А как же пресловутая, горячо любимая ссылочная целостность ? :)
18 окт 19, 11:49    [21997272]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7752
Владислав Колосов
Konstantin_Patrushev,

если значение неизвестно, то надо и хранить "неизвестно", т.е. NULL.


Лично не проверял, не могу сказать.
18 окт 19, 11:55    [21997277]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
fkthat
Member

Откуда:
Сообщений: 2965
L_argo
А как же пресловутая, горячо любимая ссылочная целостность ? :)

Так она тут, если я ничего не упустил, не упоминалась. Если нужно "0 or 1 to Many", то удобней NULL (можно реализовать и без NULL, но потребуется дополнительная таблица). Просто, с NULL, как я и приводил пример выше, надо быть аккуратным:

declare @x int = null
select @x - @x
18 окт 19, 11:59    [21997285]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 308
fkthat,

Вот как. Every day you learn something new. Не знал, что спец гуиды такие есть.

А что касается ссылочной целостности, то вот что гуры DW говорят
https://www.kimballgroup.com/2010/10/design-tip-128-selecting-default-values-for-nulls/
18 окт 19, 12:15    [21997298]     Ответить | Цитировать Сообщить модератору
 Re: Empty guid или Null  [new]
Владислав Колосов
Member

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

в статье идет речь о системе аналитической отчетности, не об OLTP.
18 окт 19, 12:38    [21997320]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить