mysql聚集索引和非聚集索引之间的区别

聚集索引和非聚集索引是mysql数据库中两种主要的索引方式,不同的存储引擎支持索引类型是不一样,那这两种索引有什么不同呢?

聚集索引

只有同时满足以下两个条件,才会创建聚集索引

  • 数据存储有序
  • key值应该是唯一的

每当您在表中应用聚集索引时,它将仅在该表中执行排序。您只能在像主键这样的表中创建一个聚集索引。聚簇索引与字典相同,字典按字母顺序排列数据。

在聚集索引中,索引包含指向数据存储的块而不是数据存储地址的指针。

非聚集索引

数据存储在一个位置,索引存储在另一位置。由于数据和非聚集索引是分开存储的,因此在一个表中可以有多个非聚集索引。

在非聚集索引中,索引包含指向数据的指针。

聚集索引和非聚集索引之间的区别:

聚集索引 非聚集索引
聚集索引更快 非聚集索引较慢
聚集索引需要较少的内存来进行操作。 非聚集索引需要更多的内存用于操作。
在聚簇索引中,索引是主要数据。 在非聚集索引中,索引是数据的副本。
一个表只能有一个聚集索引。 一个表可以有多个非聚集索引。
聚集索引具有将数据存储在磁盘上的固有能力。 非聚集索引不具有将数据存储在磁盘上的固有能力。
聚集索引存储块指针不是数据指针 非聚集索引存储值和指向保存数据的实际行的指针。
在聚簇索引中,叶节点是实际数据本身。 在非聚集索引中,叶节点不是实际数据本身,而是仅包含包含的列。
在聚簇索引中,聚簇键定义表中数据的顺序。 在非聚集索引中,索引键定义索引内数据的顺序。
聚集索引是一种索引类型,其中表记录在物理上被重新排序以匹配该索引。 非聚集索引是一种特殊类型的索引,其中索引的逻辑顺序与磁盘上行的物理存储顺序不匹配。
MySQL和PostgreSQL之间的区别
mysql中SQL中DROP和TRUNCATE之间的区别
Tags: