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

alt

前提知识点

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

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

什么是聚簇索引

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

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

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

alt

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

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

优点

数据访问更快

缺点

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

什么是非聚簇索引

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

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

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

#面试#
全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
有没有友友知道hr面会问什么我应该反问什么?还有如何防止hr套话啊?还有应该如果催hr推进快一点#字节#OPPO#hr面
牛客989988346号:职业规划,优缺点,为什么选择这个岗,对应聘公司产品的了解和满意度,如果让你改进公司产品你会怎么做,对ai(新技术)的了解,有无其他offer,什么时候能到岗
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客企业服务