问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MySQL聚簇索引和非聚簇索引的区别

创作时间:
作者:
@小白创作中心

MySQL聚簇索引和非聚簇索引的区别

引用
CSDN
1.
https://blog.csdn.net/QGhurt/article/details/137294462

聚簇索引不是一种新的索引,而是一种数据存储方式
在聚簇索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。换句话说,聚簇索引将数据存储与索引部分结合在了一起。

聚簇索引
在非聚簇索引中,索引结构与数据实际存储分离。非聚簇索引的叶子节点不直接包含数据记录,而是包含了指向数据行的指针。
非聚簇索引
在非聚簇索引的叶子节点上存储的并不是真正的行数据,而是主键 ID,所以当我们使用非聚簇索引进行查询时,首先会得到一个主键 ID,然后再使用主键 ID 去聚簇索引上找到真正的行数据,我们把这个过程称之为回表查询。
MyISAM 采用的是非聚簇索引,InnoDB 采用的是聚簇索引。
可以这么说:

聚簇索引直接将数据存储在 B+树的叶子节点中,而非聚簇索引的叶子节点存储的是指向数据行的指针。

一个表只能有一个聚簇索引,但可以有多个非聚簇索引。

聚簇索引改善了顺序访问的性能,但更新主键的成本较高;非聚簇索引适合快速插入和更新操作,但检索数据可能需要更多的磁盘 I/O。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号