Sql 什么&x2019;主键和聚集索引之间的区别是什么?

Sql 什么&x2019;主键和聚集索引之间的区别是什么?,sql,Sql,可能重复: 我确保我搜索了这个论坛,但是之前没有人问过这个问题,我在任何地方也找不到任何答案 我的问题是=“主键和聚集索引之间有什么区别?”首先,一个是键,另一个是索引 在大多数数据库行话中,键是以某种方式标识数据的东西,与数据的存储或性能没有明确的关系。主键是唯一标识该数据的一段数据 另一方面,索引是描述(更快)访问数据的方式的东西。它(通常)不关心数据的完整性和意义,只关心性能和存储。特别是在SQL Server中,聚集索引是指示行存储的物理顺序的索引。它所做的事情相当复杂,但一个有用的近

可能重复:

我确保我搜索了这个论坛,但是之前没有人问过这个问题,我在任何地方也找不到任何答案


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

首先,一个是键,另一个是索引

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


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


所以,它们是完全不同的东西,有点互相赞美。这就是为什么SQL Server在通过设计器创建主键时,会附带一个免费的聚集索引。

在询问主键和聚集索引之间的区别之前,您必须知道键和索引不是一回事

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

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

聚集索引是一种特殊的索引,用于定义表的物理顺序(它应该是顺序数据)


我试着用我自己的话来解释这一点,但是你可以通过谷歌搜索找到你需要的所有资源(我绝对建议你在大多数RDBMS中阅读大量内容!)

,据我所知,当你创建PK时,后面的引擎会创建聚集索引。当聚集索引设置数据顺序并用于性能时,PK用于实体完整性。

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


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

除了maybe或:)我已经阅读了这些链接,但这些链接正在比较主键和唯一键。这取决于所使用的DBMS。你说的是哪一个?并非所有数据库管理系统都有“聚集索引”,有些数据库有不同的名称。它是用于SQL数据库的。@ms_jordan:你是说SQL Server吗?如果是这样,请在问题中添加标记。“这意味着,当您没有指定order子句时,数据很可能会按照聚集索引的值进行排序”-尽管像是真的那样依赖它确实是愚蠢的。@Damien为了传达确切的含义,我添加了大量的警告词(近似、可能、复杂),不谈细节。但“白痴”是一个很好的词,可以概括为:)一个更具外交色彩的词可能是不明智的。。。