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

索引数据结构

二叉树
红黑树
hash表
btree树

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

数据结构学习网站

在这里插入图片描述

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

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

mylsam存储引擎实现

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

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

innodb存储引擎实现

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

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

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

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

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

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页