SQL Server 中聚簇索引和非聚簇索引的区别


索引是与实际表或视图关联的查找表,数据库使用它来提高数据检索性能。在索引中,键存储在一种结构(B 树)中,使 SQL Server 能够快速有效地找到与键值关联的行。如果在表上定义了主键和唯一键约束,则会自动创建索引。索引有两种类型,即聚簇索引非聚簇索引

阅读本文以了解有关聚簇索引非聚簇索引的更多信息,以及它们之间有何不同。

什么是聚簇索引?

聚簇索引是一种索引类型,其中表的记录会根据索引进行物理重新排序。如果表创建了主键约束,则数据库引擎会自动创建一个聚簇索引。在这种情况下,数据会根据其键和值在表或视图中进行排序或存储。

聚簇索引包含主要数据。它速度很快,因此在聚簇索引中数据检索更快,并且它还需要更少的内存空间来执行操作。聚簇索引具有将数据存储在磁盘上的固有能力。

什么是非聚簇索引?

非聚簇索引是一种特殊的索引类型,其中索引的逻辑顺序与磁盘上行的物理存储顺序不匹配。在这种类型的索引中,表是用 UNIQUE 约束创建的,然后数据库引擎会自动创建一个非聚簇索引。

非聚簇索引包含非聚簇索引键值,并且每个键值条目都有一个指向包含键值的数据行的指针。但是,非聚簇索引相对较慢,并且需要更多的内存空间来执行操作。此外,非聚簇索引不具有将数据存储在磁盘上的固有属性。

聚簇索引和非聚簇索引的区别

下表重点介绍了 SQL Server 中聚簇索引和非聚簇索引之间所有主要区别:

关键

聚簇索引

非聚簇索引

基本

聚簇索引是在主键上创建的。

非聚簇索引可以在任何键上创建。

排序

根据顺序物理存储数据。

它不会影响顺序。

索引数量

一个表中只能有一个聚簇索引。

一个表可以有多个非聚簇索引。

空间

不需要额外的空间来存储逻辑结构。

需要额外的空间来存储逻辑结构。

性能

数据检索速度比非聚簇索引快。

数据更新速度比聚簇索引快。

叶节点

叶节点包含聚簇索引中的实际数据。

叶节点不包含非聚簇索引中的实际数据。

索引数量

一个表只能有一个聚簇索引。

一个表可以有多个非聚簇索引。

数据

聚簇索引包含主要数据。

非聚簇索引包含数据的副本。

结论

您应该注意到的最显着的区别是,聚簇索引只能在主键上创建,而非聚簇索引可以在任何键上创建。

更新于: 2023 年 2 月 20 日

8K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.