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