我在表中有一个列(例如用户名),我想确保它是唯一的。因此,我为该列创建了一个唯一键并将其命名为 IX_Users_UserName。
现在,如果我根据用户名进行大量搜索,我想确保该字段有一个索引。
我是否需要创建单独的索引,或者唯一键是否也被视为索引,就像主键是聚集唯一键一样?
我在表中有一个列(例如用户名),我想确保它是唯一的。因此,我为该列创建了一个唯一键并将其命名为 IX_Users_UserName。
现在,如果我根据用户名进行大量搜索,我想确保该字段有一个索引。
我是否需要创建单独的索引,或者唯一键是否也被视为索引,就像主键是聚集唯一键一样?
基本上,在 SQL Server 中,唯一约束确实是通过唯一索引来实现的。
UNIQUE 约束和 UNIQUE INDEX 之间的区别非常微妙,真的。如果创建 UNIQUE INDEX,则可以在另一个表的外键约束中引用它(如果创建 UNIQUE 约束则不起作用....)。
那么有什么区别呢?好吧 - 唯一约束实际上更像是表上的逻辑事物 - 您想要表达给定列(或列组)的内容是唯一的意图。
唯一索引(像大多数索引一样)更多的是“幕后”实现细节。
从我的角度来看,除非你真的有问题,否则我总是使用 UNIQUE INDEX - 作为参照完整性约束的一部分的好处是非常有效的,并且在某些情况下非常有用。在功能上,实际上,使用唯一约束与唯一索引之间没有区别,真的。
唯一键是我怀疑几乎所有数据库产品中的索引。必须如此,否则数据库将很难执行它:当您插入一个值时,数据库必须回答“该值是否已经存在?” 明智的做法是查阅索引。
我面前没有要测试的 SQL Server,但如果没有,我会感到震惊。