Categories: Mysql数据库

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

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

聚集索引

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

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

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

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

非聚集索引

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

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

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

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

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

Clockwise一款AI日历工具

Clockwise是一款创新的…

3天 ago

Leonardo一个视觉创意AI生成平台

Leonardo.ai提供了一…

3天 ago

DupDub一款终极AI内容创作助手

DupDub 是一个一站式内容…

3天 ago

Murf AI是一款尖端的AI声音生成器

Murf AI是一款尖端的AI…

3天 ago