面试复习01-mysql索引的本质和优化

索引数据结构

二叉树
红黑树
hash表
btree树

索引是高效获取数据的排好序的数据结构

数据结构学习网站

在这里插入图片描述

图形化模拟数据结构
在这里插入图片描述
B树

在这里插入图片描述
B+树
在这里插入图片描述

mylsam存储引擎实现

非聚集索引,索引单独在myi文件
在这里插入图片描述

myi文件的结构
b+树实现
myd数据随机存放
在这里插入图片描述
mylsam读取数据步骤
如果是有索引先读取myi文件,然后根据索引位置load数据
不是索引则全表查询

innodb存储引擎实现

是聚集索引,叶子点包含了完整的数据记录

mysq为什么搞聚集索引和非聚集索引
聚集索引只在一个文件查询,效率比较高
在这里插入图片描述
在这里插入图片描述
为什么innodb必须有主键,并且推荐使用整型的自增主键
mysql开发innodb底层存储引擎的时候 ,表的数据必须有b+ 树的聚集索引去组织,所以必须有个主键。
没有主键底层怎么去组织呢?
如果没有选主键,innodb自动帮你选一个不重复的一列字段作为默认索引,还是b+ 树,如果找不到这样的列,会在后台建一个整型的隐藏列帮你维护数据,维护一个唯一索引的整型列,组织整张表是数据

b+ 树叶子节点中间有个指针,左到右递增
指针存放下个节点在磁盘的位置,指针是双向的
自增的好处,永远都是在最右边操作,不用考虑树的分裂和平衡,效率比较高
在这里插入图片描述
分库分表
雪花算法,redis维护自增主键

联合索引也就是复合索引底层存储结构长什么样?

索引最左前缀原理
在这里插入图片描述
逐个字段来排,如果第一个一样看第二个,以此类推
最左前缀:不能跳过左边的索引,要按照索引顺序来用
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值