可能重复:
Performance difference between Primary Key and Unique Clustered Index in SQL Server
我确保我搜索了这个论坛,但之前没有人问过这个问题,我也找不到任何答案。
我的问题是=“主键和聚簇索引之间有什么区别?”
答案 0 :(得分:14)
嗯,对于初学者来说,一个是键,另一个是索引。
在大多数数据库术语中,密钥是以某种方式识别数据的东西,与数据的存储或性能没有明确的关系。 主键是唯一标识该数据的数据。
另一方面,索引是描述(更快)访问数据的方式的东西。它(通常)不关心数据的完整性和含义,它只涉及性能和存储。特别是在SQL Server中,聚簇索引是指示行的物理存储顺序的索引。它所做的事情非常复杂,但有用的近似是行按聚集索引的值排序。这意味着当您未指定订单子句时,数据可能会按聚集索引的值进行排序。
所以,它们是完全不同的东西,有点互相恭维。这就是为什么SQL Server在通过设计器创建主键时会抛出一个免费的聚簇索引。
答案 1 :(得分:5)
在询问主键和聚簇索引之间的区别之前,您必须知道键和索引不是一回事。
密钥可以是主密钥或外键。每个表只能有一个主键(但可能只有一个列)。密钥是合乎逻辑的,它服务于业务逻辑并定义数据的完整性。外键是对另一个表的主键的引用。
索引有助于加快查询速度,因为它可以构建对您选择的列的引用。因此,它会创建单独的文件,以帮助您使用索引列的查询。
聚簇索引是一种特殊索引,用于定义表的物理顺序(它应该是顺序数据)。
我试着用自己的话说明这一点,但是你会通过谷歌搜索找到你需要的所有资源(我绝对建议你阅读很多这些资源!)
答案 2 :(得分:2)
主键是记录的唯一标识符。 负责此字段的唯一值。它只是现有的或专门创建的字段或唯一标识行的字段组。
聚集索引是通过访问有序记录来提高数据检索操作速度的数据结构。索引是表格的一部分的副本。它在硬盘上需要额外的物理位置。
答案 3 :(得分:0)
在大多数RDBMS中,据我所知,当你创建PK时,后面的引擎会创建聚簇索引。当聚集索引设置数据顺序并用于性能时,PK用于Entity integrity
。