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

我卧底五年成了老二,再卧底下去,我怕会成为老大!

 

聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体细节依赖于其实现方式。

聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。

注意:我们日常工作中,根据实际情况自行添加的索引都是辅助索引,辅助索引就是一个为了需找主键索引的二级索引,现在找到主键索引再通过主键索引找数据。

 

什么是聚簇索引?

定义:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据

Mysql里面的代表引的到擎是 InnoDB

优点:

 

1.数据访问更快,因为聚簇索引将索引和数据保存在同一个B+树中,因此从聚簇索引中获取数据比非聚簇索引更快
2.聚簇索引对于主键的排序查找和范围查找速度非常快

缺点:

1.插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则将会出现页分裂,严重影响性能。因此,对于InnoDB表,我们一般都会定义一个自增的ID列为主键
2.更新主键的代价很高,因为将会导致被更新的行移动。因此,对于InnoDB表,我们一般定义主键为不可更新。
3.二级索引访问需要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。

  

什么是非聚簇索引?

定义:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置

Mysql里面的代表的引擎是MyISAM 

 

区别:

  1. 叶子节点存储的数据不同,聚簇索引是主键和数据data,而非聚簇索引则是数据存放的物理地址;
  2. 一个表只能有一个聚簇索引,而非聚簇索引一个表可以有多个;

 

聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体细节依赖于其实现方式

posted @ 2021-11-02 08:59  方达达  阅读(37)  评论(0编辑  收藏  举报