我正在使用sql server 2008 r2。我有以下内容: -
两者之间是否有任何差异。我的意思是在列上有一个唯一的键,或者在同一列上有一个唯一的索引?
谢谢
答案 0 :(得分:2)
这是一个渐进的概念列表,应该有助于清理问题:
独特的索引在这里是一个古怪的,应该被视为一个特例。如果往往比非唯一索引略窄,并且通常用于强制执行密钥。然而,它也可以在没有密钥的情况下使用,在这种情况下,它可能表现得或多或少相似,就好像它有一把钥匙一样。有多相似,取决于DBMS 2 。
所以回答你的问题:在MS SQL Server下,有或没有UNIQUE约束的唯一索引在实践中非常相似,但你仍然应该将它们视为单独的概念。我使用UNIQUE约束(在其下面有唯一索引)作为默认值,使其更加自我记录并与其他DBMS的工作方式保持一致。
1 DBMS经常强制或至少默认为每个键下面的索引。但情况并非总是如此 - 例如,Oracle将允许没有索引的密钥或具有非唯一索引的密钥(它甚至需要非延迟密钥的非唯一索引)。
2 在MS SQL Server下,它非常相似。例如,在Oracle下,您无法从FOREIGN KEY引用唯一索引,您必须引用正确的密钥。