При создании индекса по столбцу, который собирается быть UNIQUE (но не первичный ключ таблицы), сервер пусть SQL для меня выбрать несколько вариантов:В чем разница между созданием индекса UNIQUE как «индекса» или «ограничения» в SQL Server?
1) я могу выбрать для того, чтобы быть Constraint или Индекса.
Я предполагаю, что это означает, что если я установлю его как ограничение, он не будет использовать его при запросе, только при записи. Тем не менее, единственный эффективный способ, с помощью которого SQL Server может обеспечить такое ограничение, заключается в создании индекса. Какая польза для этого варианта?
2) Кроме того, если я устанавливаю его как «индекс», он позволяет мне указать, что он должен игнорировать дубликаты ключей. Это самое загадочное для меня ...
Я снова думаю, что это означает противоположность ограничения. Вероятно, это означает «использовать его при запросе, но даже не проверяйте при записи».
Но почему я должен был установить его как УНИКАЛЬНЫЙ?
Я предполагаю, что есть некоторые оптимизации, которые может выполнять SQL Server, но я хотел бы лучше понять это.
Кто-нибудь знает, что именно SQL Server делает с этими параметрами?
Каков предел для установки индекса как уникального, но игнорировать дубликаты ключей?
Примечание: Это для SQL Server 2000
EDIT: Согласно тому, что вы сказали, но ... Если я создаю Constraint, она будет использоваться для ускорения запросов, которые фильтруют с помощью поля в ограничении?
Спасибо!
Я всегда задавался вопросом об этой разнице. Разница между уникальным индексом и уникальным ограничением. – leppie 2008-10-21 14:34:15