集群指数和唯一指数有什么区别?

时间:2011-06-10 08:44:56

标签: sql-server sql-server-2005 sql-server-2008

我刚学习SQL Server中的索引,但在Clustered和Unique索引之间混淆了。如果两者都应用于唯一键列ex:PersonID。那么两者之间有什么区别。

感谢名单。

4 个答案:

答案 0 :(得分:36)

两者无关:

  • “唯一”确保每个值完全只发生一次
  • “Clustered”是数据在磁盘上的排列方式

您可以拥有所有4种排列:

  • “unique non-clustered”
  • “unique clustered”
  • “非独特的非群集”
  • “非独特群集”

由于SQL Server中“主键”(PK)的默认值已群集,因此会出现一些混淆。

“主键”必须始终是唯一的。 “unique”和“PK”之间的区别在于unique允许一个NULL,PK不允许任何NULL。

最后,一些数字限制

  • 因为clustered指的是磁盘布局,每个表只能有一个聚簇索引
  • 一个表不能有多个pimary密钥,但可以有许多唯一索引

答案 1 :(得分:16)

唯一索引只是一个具有唯一约束的索引,仅此而已。聚簇索引在磁盘上对数据进行排序以匹配索引。如果您经常只通过一列访问表中的数据,这将非常有用,例如:通过主键。此外,表只能有一个聚簇索引(当然很明显)。

答案 2 :(得分:9)

一种粗略的思考方式是想到一本电话簿。聚集索引是页面写入的顺序。任何其他索引都是单独的列表,显示要去的页面。

例如,电话簿在姓氏上“聚集”,但您可能还想通过街道查找,因此您将有一个单独的列表,表示居住在假街上的人员位于第3,45和63页等

答案 3 :(得分:1)

AFAIK每个表通常只有一个聚簇索引,它通常是主键,但它可能有任何唯一索引。

更多:http://decipherinfosys.wordpress.com/2007/07/04/back-to-the-basics-difference-between-primary-key-and-unique-index/