我在表中有一个列(例如UserName),我想确保它是唯一的.所以我为该列创建了一个唯一键,并将其命名为IX_Users_UserName.
现在,如果我根据用户名搜索大量用户,我想确保该字段有索引.
我是否需要创建单独的索引,或者是唯一的键还被视为索引,就像主键是群集唯一键一样?
唯一键:唯一键强制定义它们的列的唯一性.Unique Key在列上创建非聚集索引.唯一键只允许一个NULL值.
更改表以向列添加唯一约束:
ALTER TABLE作者ADD CONSTRAINT IX_Authors_Name UNIQUE(Name)GO
资源
来自MSDN的更多信息.
FWIW - 如果你的约束没有创建索引,我会避免命名它IX_
,因为通常假设它与一个(IX =索引)相关联.
基本上,在SQL Server中,确实通过唯一索引实现了唯一约束.
UNIQUE约束和UNIQUE INDEX之间的区别非常微妙.如果创建UNIQUE INDEX,则可以在另一个表的外键约束中引用它(如果创建UNIQUE约束,则不起作用....).
那有什么区别?好吧 - 一个独特的约束实际上更像是一个逻辑上的东西 - 你想表达给定列(或列组)的内容是唯一的意图.
唯一索引(与大多数索引一样)更多的是"幕后"实现细节.
从我的角度来看,除非你真的遇到问题,否则我总是使用一个独特的索引 - 作为参照完整性约束的一部分的好处是非常有效的,并且在某些情况下非常有用.从功能上来说,实际上,使用Unique Constraint和Unique Index之间没有区别.