索引数据结构
二叉树
红黑树
hash表
btree树
索引是高效获取数据的排好序的数据结构
数据结构学习网站
图形化模拟数据结构
B树
B+树
mylsam存储引擎实现
非聚集索引,索引单独在myi文件
myi文件的结构
b+树实现
myd数据随机存放
mylsam读取数据步骤
如果是有索引先读取myi文件,然后根据索引位置load数据
不是索引则全表查询
innodb存储引擎实现
是聚集索引,叶子点包含了完整的数据记录
mysq为什么搞聚集索引和非聚集索引
聚集索引只在一个文件查询,效率比较高
为什么innodb必须有主键,并且推荐使用整型的自增主键
mysql开发innodb底层存储引擎的时候 ,表的数据必须有b+ 树的聚集索引去组织,所以必须有个主键。
没有主键底层怎么去组织呢?
如果没有选主键,innodb自动帮你选一个不重复的一列字段作为默认索引,还是b+ 树,如果找不到这样的列,会在后台建一个整型的隐藏列帮你维护数据,维护一个唯一索引的整型列,组织整张表是数据
b+ 树叶子节点中间有个指针,左到右递增
指针存放下个节点在磁盘的位置,指针是双向的
自增的好处,永远都是在最右边操作,不用考虑树的分裂和平衡,效率比较高
分库分表
雪花算法,redis维护自增主键
联合索引也就是复合索引底层存储结构长什么样?
索引最左前缀原理
逐个字段来排,如果第一个一样看第二个,以此类推
最左前缀:不能跳过左边的索引,要按照索引顺序来用