我在表格中有一列(例如用户名),我想确保它是唯一的。因此,我为该列创建了一个唯一的键,并将其称为IX_Users_UserName。Sql Server唯一键也是索引吗?
现在,如果我根据用户名进行大量搜索用户,我想确保该字段有一个索引。
我需要创建一个单独的索引,还是唯一的键也被视为索引,就像主键是一个聚集的唯一键?
我在表格中有一列(例如用户名),我想确保它是唯一的。因此,我为该列创建了一个唯一的键,并将其称为IX_Users_UserName。Sql Server唯一键也是索引吗?
现在,如果我根据用户名进行大量搜索用户,我想确保该字段有一个索引。
我需要创建一个单独的索引,还是唯一的键也被视为索引,就像主键是一个聚集的唯一键?
唯一的关键是我怀疑几乎每一个数据库产品的索引。它必须是,否则数据库将很难实施它:当你插入一个值时,数据库必须回答“这个值是否已经存在?”理智的方法是咨询索引。
我没有在我面前测试的SQL Server,但如果没有,我会感到震惊。
基本上,在SQL Server中,唯一的约束确实是通过唯一索引实现的。
UNIQUE约束和UNIQUE INDEX之间的差异非常微妙,真的。如果你创建了一个UNIQUE INDEX,你可以在另一个表的外键约束中引用它(如果你创建了一个UNIQUE约束,则不起作用....)。
那有什么区别?那么 - 一个唯一的约束在表格中更是一个合乎逻辑的事情 - 您想要表达给定列(或列组)的内容是唯一的意图。
独特的索引(像大多数索引)更像是一个“幕后”实现细节。
从我的角度来看,除非您真的有问题,否则我总是使用UNIQUE INDEX - 作为参照完整性约束的一部分的好处非常有效,在某些情况下可能非常有用。在功能上,实际上,真正使用唯一约束与唯一索引没有区别。
我觉得有必要指出一个主键不是自动聚集的唯一键。您的聚簇索引不需要位于主键上。 – 2010-07-21 19:23:01
另请参阅http://stackoverflow.com/questions/564895/what-is-the-difference-between-unique-key-and-index-with-isunique-yes – 2011-09-20 19:06:52