「一分钟学Java」快速了解MySQL索引(二)

alt

前提知识点

  1. MySQL的InnoDB索引数据结构是B+树

  2. 主键索引叶子节点的值存储的就是MySQL的数据行,普通索引的叶子节点的值存储的是主键值

什么是聚簇索引

找到了索引就找到了需要的数据,那么这个索引就是聚簇索引,所以主键就是聚簇索引,修改聚簇索引其实就是修改主键。

聚簇索引将B+树的叶子结点存放行数据。

InnoDB的默认数据结构是聚簇索引。

alt

主要注意,一般情况下主键会默认创建聚簇索引,且一张表只允许存在一个聚簇索引

  • 聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚簇索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分,每张表只能拥有一个聚簇索引
  • InnoDB通过主键聚集数据,如果没有定义主键,InnoDB会选择非空的唯一索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引

优点

数据访问更快

缺点

插入速度严重依赖插入顺序,故推荐将自增ID作为主键,避免因为插入数据导致频繁更新索引文件。

什么是非聚簇索引

索引的存储和数据的存储是分离的,如果找到了索引但没找到数据,需要根据索引上的值(主键)再次回表查询,这类索引就是非聚簇索引。

索引子节点中存的是数据地址,先查找到索引中保存的地址,再根据地址从数据文件中找到数据,

MyISAM的默认数据结构是非聚簇索引。 alt

#面试#
全部评论

相关推荐

SHC2:关键问题是你这三段实习是三个不同的岗位…你这样子秋招就是只有一段实习的本科生..
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客企业服务