SQL Server 中聚簇索引和非聚簇索引的区别
索引是与实际表或视图关联的查找表,数据库使用它来提高数据检索性能。在索引中,键存储在一种结构(B 树)中,使 SQL Server 能够快速有效地找到与键值关联的行。如果在表上定义了主键和唯一键约束,则会自动创建索引。索引有两种类型,即聚簇索引和非聚簇索引。
阅读本文以了解有关聚簇索引和非聚簇索引的更多信息,以及它们之间有何不同。
什么是聚簇索引?
聚簇索引是一种索引类型,其中表的记录会根据索引进行物理重新排序。如果表创建了主键约束,则数据库引擎会自动创建一个聚簇索引。在这种情况下,数据会根据其键和值在表或视图中进行排序或存储。
聚簇索引包含主要数据。它速度很快,因此在聚簇索引中数据检索更快,并且它还需要更少的内存空间来执行操作。聚簇索引具有将数据存储在磁盘上的固有能力。
什么是非聚簇索引?
非聚簇索引是一种特殊的索引类型,其中索引的逻辑顺序与磁盘上行的物理存储顺序不匹配。在这种类型的索引中,表是用 UNIQUE 约束创建的,然后数据库引擎会自动创建一个非聚簇索引。
非聚簇索引包含非聚簇索引键值,并且每个键值条目都有一个指向包含键值的数据行的指针。但是,非聚簇索引相对较慢,并且需要更多的内存空间来执行操作。此外,非聚簇索引不具有将数据存储在磁盘上的固有属性。
聚簇索引和非聚簇索引的区别
下表重点介绍了 SQL Server 中聚簇索引和非聚簇索引之间所有主要区别:
关键 |
聚簇索引 |
非聚簇索引 |
|---|---|---|
基本 |
聚簇索引是在主键上创建的。 |
非聚簇索引可以在任何键上创建。 |
排序 |
根据顺序物理存储数据。 |
它不会影响顺序。 |
索引数量 |
一个表中只能有一个聚簇索引。 |
一个表可以有多个非聚簇索引。 |
空间 |
不需要额外的空间来存储逻辑结构。 |
需要额外的空间来存储逻辑结构。 |
性能 |
数据检索速度比非聚簇索引快。 |
数据更新速度比聚簇索引快。 |
叶节点 |
叶节点包含聚簇索引中的实际数据。 |
叶节点不包含非聚簇索引中的实际数据。 |
索引数量 |
一个表只能有一个聚簇索引。 |
一个表可以有多个非聚簇索引。 |
数据 |
聚簇索引包含主要数据。 |
非聚簇索引包含数据的副本。 |
结论
您应该注意到的最显着的区别是,聚簇索引只能在主键上创建,而非聚簇索引可以在任何键上创建。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP