繁体   English   中英

具有“独特”的唯一键或索引

[英]Unique Key or Index with 'Is Unique'

我有一个相当愚蠢的问题。 我将简化这种情况:我在SQL Server 2008 R2中有一个表,其中有一个字段'ID'(int,PK)和一个Name(nvarchar(50))和Description(text)字段。 名称 - 字段中的值应为唯一。 搜索表格时,将使用名称 - 字段,因此性能是关键。

我一直在互联网上寻找2小时,以完全理解唯一键,主键,唯一索引等之间的差异,但它并没有帮助我解决我应该使用什么键/约束/索引的问题。

我正在改变SQL Server Management Studio中的表。 我改变名字字段的问题是:我应该使用“Type = Index”和“Is Unique = Yes”还是使用“Type = Unique Key”?

提前致谢!

亲切的问候,阿巴斯

唯一键和主键都是逻辑约束。 它们都由唯一索引支持。 参与主键的列不允许为NULL

从创建外键的角度来看,唯一索引是重要的,因此所有三个选项都可以工作。

基于约束的索引具有常规索引不存储的附加元数据(例如, sys.objects create_date )。 创建基于非约束的唯一索引可以允许更大的灵活性,例如它允许您在索引定义中定义包含的列(我认为可能还有一些其他的东西)。

unique key值不能与表中列的任何其他行具有相同的值。 primary key是列字段,它是unique keynot null ,用作主查找机制(意味着每个表都应该有一个primary key作为列或表示唯一条目的列组合) 。

我没有真正使用索引,但我相信它遵循相同的逻辑。

有关更多信息,请参见http://en.wikipedia.org/wiki/Unique_key

索引是DBMS用于有效组织表数据的集合。 通常,您希望在经常搜索的列和列组上创建索引。 例如,如果您有一个列'name',并且您正在搜索您的表名,其中name ='?' 并且该列上的索引将创建单独的存储,该命令对该表进行排序,因此按名称搜索记录的速度很快。 通常,主键会自动编入索引。

当然上面的内容有点过于笼统,你应该考虑在添加索引之前和之后对查询进行分析,以确保它被使用并加快速度。 对于使应用程序具体化的索引,有一些微妙之处。 它们需要额外的存储空间和时间来构建和维护,因此您总是希望能够明智地添加它们。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM