首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sql Server唯一键也是索引吗?

Sql Server唯一键也是索引吗?
EN

Stack Overflow用户
提问于 2008-12-14 04:47:54
回答 3查看 22.2K关注 0票数 52

我在表中有一列(例如。UserName),我想确保它是唯一的。因此,我为该列创建了一个惟一键,并将其命名为IX_Users_UserName。

现在,如果我根据用户名对用户进行大量搜索,我希望确保该字段有索引。

我是否需要创建一个单独的索引,或者唯一键是否也被视为索引,就像主键是聚集的唯一键一样?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-12-14 05:11:55

唯一键:唯一键强制在其上定义它们的列的唯一性。Unique Key在列上创建非聚集索引。唯一键只允许一个空值。

Alter table将唯一约束添加到列:

ALTER TABLE Authors ADD CONSTRAINT IX_Authors_Name UNIQUE(Name) GO

Source

有关更多信息,请访问MSDN

FWIW --如果您的约束没有创建索引,我将避免将其命名为IX_,因为通常假定它与一个索引相关联(IX =索引)。

票数 40
EN

Stack Overflow用户

发布于 2008-12-16 21:39:48

基本上,在SQL Server中,唯一约束实际上是通过唯一索引来实现的。

UNIQUE约束和UNIQUE索引之间的区别非常微妙。如果创建唯一索引,则可以在来自另一个表的外键约束中引用该索引(如果创建唯一约束,则不起作用……)。

那么有什么不同呢?唯一约束实际上更像是一个表上的逻辑问题--您希望表达给定列(或一组列)的内容是唯一的。

唯一索引(像大多数索引一样)更多的是“幕后”实现细节。

在我看来,除非你真的有问题,否则我总是使用唯一的索引-成为引用完整性约束的一部分的好处是非常有效的,并且在某些情况下可能非常有用。在功能上,在实践中,使用唯一约束和唯一索引没有区别。

票数 22
EN

Stack Overflow用户

发布于 2008-12-14 04:51:56

唯一键是几乎所有数据库产品中的索引。它必须是,否则数据库将很难强制执行它:当您插入一个值时,数据库必须回答“该值是否已经存在?”要做到这一点,明智的方法是查阅索引。

我面前没有一台SQL Server可以测试,但如果它没有的话,我会感到震惊。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/366186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档