mysql聚集索引和非聚集索引之间的区别
嘻嘻发布于2020-08-25
最后更新于2020年8月15日
浏览聚集索引和非聚集索引是mysql数据库中两种主要的索引方式,不同的存储引擎支持索引类型是不一样,那这两种索引有什么不同呢?
聚集索引
只有同时满足以下两个条件,才会创建聚集索引
- 数据存储有序
- key值应该是唯一的
每当您在表中应用聚集索引时,它将仅在该表中执行排序。您只能在像主键这样的表中创建一个聚集索引。聚簇索引与字典相同,字典按字母顺序排列数据。
在聚集索引中,索引包含指向数据存储的块而不是数据存储地址的指针。
非聚集索引
数据存储在一个位置,索引存储在另一位置。由于数据和非聚集索引是分开存储的,因此在一个表中可以有多个非聚集索引。
在非聚集索引中,索引包含指向数据的指针。
聚集索引和非聚集索引之间的区别:
聚集索引 | 非聚集索引 |
---|---|
聚集索引更快 | 非聚集索引较慢 |
聚集索引需要较少的内存来进行操作。 | 非聚集索引需要更多的内存用于操作。 |
在聚簇索引中,索引是主要数据。 | 在非聚集索引中,索引是数据的副本。 |
一个表只能有一个聚集索引。 | 一个表可以有多个非聚集索引。 |
聚集索引具有将数据存储在磁盘上的固有能力。 | 非聚集索引不具有将数据存储在磁盘上的固有能力。 |
聚集索引存储块指针不是数据指针 | 非聚集索引存储值和指向保存数据的实际行的指针。 |
在聚簇索引中,叶节点是实际数据本身。 | 在非聚集索引中,叶节点不是实际数据本身,而是仅包含包含的列。 |
在聚簇索引中,聚簇键定义表中数据的顺序。 | 在非聚集索引中,索引键定义索引内数据的顺序。 |
聚集索引是一种索引类型,其中表记录在物理上被重新排序以匹配该索引。 | 非聚集索引是一种特殊类型的索引,其中索引的逻辑顺序与磁盘上行的物理存储顺序不匹配。 |