MySQL 集群索引与非集群索引的区别

2025年3月17日 | 阅读 3 分钟

集群索引和非集群索引之间的区别是数据库相关面试中最常见的问题。两种索引具有相同的物理结构,并在 MySQL 服务器数据库中以 BTREE 结构存储。在本节中,我们将解释它们之间最流行的区别。

MySQL 中的索引是一个过程,可以帮助我们非常快速地从表中返回请求的数据。如果表没有索引,它会扫描整个表来查找请求的数据。 MySQL 允许两种不同类型的索引

  1. 聚集索引
  2. 非聚集索引

首先,我们简要讨论一下集群索引和非集群索引。

什么是集群索引?

集群索引是存储行数据的表。它根据只能按一个方向排序的键值定义表数据的顺序。在数据库中,每个表只能包含一个集群索引。在关系数据库中,如果表列包含主键或唯一键,MySQL 允许你基于该特定列创建一个名为 **PRIMARY** 的集群索引。

示例

以下示例解释了如何在 MySQL 中创建集群索引

特性

以下是集群索引的主要特征

  • 它使我们能够一起存储数据和索引。
  • 它根据键值以一种方式存储数据。
  • 键查找。
  • 它支持索引扫描和索引查找数据操作。
  • 集群索引始终使用一个或多个列来创建索引。

什么是集群索引?

PRIMARY 索引(集群索引)以外的索引称为非集群索引。非集群索引也称为二级索引。非集群索引和表数据都存储在不同的位置。它无法对表数据进行排序。非集群索引就像一本书,内容写在一处,索引在另一处。MySQL 允许一个表存储一个或多个非集群索引。非集群索引提高了使用不带主键的键的查询的性能。

示例

特性

以下是非集群索引的主要特征

  • 它仅存储键值。
  • 它允许访问指向物理行的二级数据。
  • 它有助于索引扫描和查找操作。
  • 一个表可以包含一个或多个非集群索引。
  • 非集群索引行存储非集群键的值和行定位符。

集群索引 VS 非集群索引

让我们通过表格形式了解集群索引和非集群索引之间的一些流行区别

参数聚集索引非聚集索引
定义集群索引是存储行数据的表。在关系数据库中,如果表列包含主键,MySQL 会自动创建一个名为 **PRIMARY** 的集群索引。PRIMARY 索引(集群索引)以外的索引称为非集群索引。非集群索引也称为二级索引。
用于它可用于对记录进行排序并将索引存储在物理内存中。它创建数据行的逻辑顺序,并使用指针访问物理数据文件。
大小其尺寸很大。与集群索引相比,其尺寸较小。
数据访问它访问数据的速度非常快。与集群索引相比,其访问能力较慢。
存储方法它将记录存储在索引的叶子节点中。它不在索引的叶子节点中存储记录,这意味着它需要额外的空间来存储数据。
额外的磁盘空间它不需要额外的报告。它需要额外的空间来单独存储索引。
键的类型它使用主键作为集群索引。它可以与充当复合键的唯一约束一起使用。
包含在表中一个表只能有一个集群索引。一个表可以包含一个或多个非集群索引。
索引 ID集群索引始终包含索引 ID 0。非集群索引始终包含索引 ID>0。

下一主题MySQL WHERE