2013-01-08 67 views
2

可能重复:
Performance difference between Primary Key and Unique Clustered Index in SQL Server主键和聚集索引有什么区别?

我要确保我搜索这个论坛,但没有人问过这个问题,并在任何地方嫌我找不到任何答案。

我的问题是=“主键和聚集索引之间有什么区别?”

+2

除了[here](http://stackoverflow.com/questions/6303995/what-is-a-difference-between-clustered-index-and-unique-index)或[here](http:// stackoverflow.com/questions/11546688/performance-difference-between-primary-key-and-unique-clustered-index-in-sql-ser):) – SWeko

+0

我确实已经阅读过这些链接,但它们正在比较主键和唯一键。 –

+0

这取决于正在使用的DBMS。你在说哪一个?并非所有的DBMS都有“聚簇索引”,有些则有不同的名称。 –

回答

9

那么,首先,一个是,另一个是索引

在大多数数据库术语中,密钥是以某种方式标识数据的东西,与数据的存储或性能没有明确关系。而主键是唯一标识该数据的一段数据。

另一方面,索引是描述访问数据的(更快)方式的东西。它(通常)并不关心数据的完整性和含义,它只关心性能和存储。具体来说,在SQL Server中,聚集索引是一个索引,指示行的存储顺序。它所做的事情非常复杂,但有用的近似值是行按聚簇索引的值排序。这意味着,当您不指定订单子句时,数据可能会按聚集索引的值进行排序。

所以,他们是完全不同的东西,那种有点相互恭维。这就是为什么SQL Server在通过设计器创建主键时会随同它一起引入一个免费的聚集索引。

+2

“这意味着,当你没有指定订单条款时,数据很可能会按照聚集索引的值进行排序” - 尽管依靠这一点就好像它是真的是真的愚蠢。 –

+1

@Damien为了传达确切的意思,我已经添加了相当多的警告词(近似,可能,复杂),而没有详细说明。但是,“白痴”是一个很好的词,总结它:) – SWeko

+0

一个更外交的术语可能是不明智的...... –

2

在你可以询问主键和聚集索引之间的区别之前,你必须知道键和索引不是同一个东西。

密钥可以是主键或外键。每个表只能有一个主键(但可能多于一列)。关键是合乎逻辑的事情,它服务于业务逻辑并定义数据的完整性。外键是对另一个表的主键的引用。

索引有助于加快查询速度,因为它会建立对所选列的引用。因此它会创建单独的文件来帮助您使用索引列的查询。

聚簇索引是一种特殊的索引,它定义了表的物理顺序(它应该是一个顺序数据)。

我想用我自己的话来解释这一点,但你会发现你需要一个谷歌搜索的所有资源(我绝对建议你读了很多的这个!)

0

在大部分RDBMS的,据我所知,当你创建PK时,后面的引擎会创建聚集索引。当聚簇索引设置数据顺序并用于性能时,PK用于Entity integrity

2

主键是记录的唯一标识符。它是负责此字段的唯一值。它只是现有的或专门创建的字段或唯一标识行的字段组。

而且聚集索引是数据结构通过有序记录的访问提高了数据检索操作的速度。索引是表的一部分的副本。它需要额外的物理空间在硬盘上。