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

Откуда: Ukraine
Сообщений: 113
В BOL сказано:
A UNIQUE constraint is preferred over a unique index.

Кто-то может объяснить чем оно более предпочтительно?
1 ноя 05, 16:22    [2027956]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
При создании уникального индекса можно игнорировть повторяющиеся ключи, а можно и не игнорировать. А вот unique-ограничение четко определяет уникальность каждой строки.
1 ноя 05, 16:32    [2028006]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
GMSUka
Member

Откуда: Ukraine
Сообщений: 113
Prolog
При создании уникального индекса можно игнорировть повторяющиеся ключи, а можно и не игнорировать. А вот unique-ограничение четко определяет уникальность каждой строки.


А если отбросить "может" предположим я создаю две одинаковые таблицы
одну с ограничением другую с индексом чем первый вариант лучше?
1 ноя 05, 16:35    [2028033]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
aleksey_fomchenko
Member

Откуда: Москва
Сообщений: 1014
UNIQUE constraint ввели для совместимости со стандартом SQL-92, где более жесткие нграничения.

По скорости и функционалу отличий нет.
1 ноя 05, 16:38    [2028045]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
Glory
Member

Откуда:
Сообщений: 104760
GMSUka

А если отбросить "может" предположим я создаю две одинаковые таблицы
одну с ограничением другую с индексом чем первый вариант лучше?


Предпочтительнее в данном случае означает "MS советует вам использовать."
А "лучше" надо всегда говорить вместе "для чего". Просто "лучше" не бывает.

Одной из причин может быть то, что UNIQUE constraint имеется в стандарте ANSI SQL, а уникальных индексов там нет.
1 ноя 05, 16:39    [2028048]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
Кроме того, к unique-ограничению может обращаться foreign key, а вот к уникальному индексу нет. По той же причине.
1 ноя 05, 16:39    [2028055]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
GMSUka
Member

Откуда: Ukraine
Сообщений: 113
Glory

Предпочтительнее в данном случае означает "MS советует вам использовать."
А "лучше" надо всегда говорить вместе "для чего". Просто "лучше" не бывает.
Одной из причин может быть то, что UNIQUE constraint имеется в стандарте ANSI SQL, а уникальных индексов там нет.


Т.е. резюмируем физических предпосылок по производительности или по надежности использовать только что то одно нет?
1 ноя 05, 16:41    [2028061]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
Glory
Member

Откуда:
Сообщений: 104760
GMSUka

Т.е. резюмируем физических предпосылок по производительности или по надежности использовать только что то одно нет?


UNIQUE constraint - это UNIQUE index + запись в таблице sysobjects.
Второе является декларацией уникальности, а первое - физическим механизмом реализации этой уникальности.
1 ноя 05, 16:44    [2028081]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
Брюлик
Member

Откуда:
Сообщений: 690
Когда ты создаешь UNIQUE Constraint SQL Server автоматически создает
unique non-clustered index

Sql Server испльзует индексы (physical design) для увеличения производительности (speed up) запросов

UNIQUE Contraint (logical design)исплоьзуется для enforce integrity.
1 ноя 05, 16:46    [2028098]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
aleksey_fomchenko
Member

Откуда: Москва
Сообщений: 1014
to Prolog

К уникальному инексу так же можно обращатьсяч строя FK.
1 ноя 05, 16:47    [2028104]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
aleksey_fomchenko
to Prolog

К уникальному инексу так же можно обращатьсяч строя FK.
Проверил: действительно можно, даже с IGNORE_DUP_KEY.
1 ноя 05, 17:04    [2028231]     Ответить | Цитировать Сообщить модератору
 Re: UNIQUE constraint  [new]
aleksey_fomchenko
Member

Откуда: Москва
Сообщений: 1014
to Prolog
А чем IGNORE_DUP_KEY вам непонравился, он же отрабатывает только при вставке, и откидывает дубликаты.
1 ноя 05, 17:08    [2028251]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить