mysql底层索引与数据结构算法学习

索引  数据结构

  二叉树  从根节点查找数据,左边的数据小于根节点的数据,右边的数据大于根节点的数据

  红黑树  平衡二叉树

  Hash表

  B-Three 叶子节点具有相同的深度,叶节点指针为空,所有索引元素不重复,节点中的所有数据索引从左到右一次递增

  B+Three 叶子节点不存data,只存索引,可以放更多索引,叶子节点包含所有索引字段,叶子节点使用指针连接,提高区间访问性能

一个叶子节点的大小是16kb

 

  大部分时间在加载数据到内存,在内存中二分查找数据很快(数据结构主要是减少磁盘io)

  

 

搜索引擎   MyISAM

  InnoDB 聚集索引 叶子节点包含完整的数据记录(数据跟索引不在同一个表中)

innoDB建表为什么建议添加主键?整型自增

  用于维护b+tree   (不见索引会挑选一列不同的来维护,否则就会增加一个隐形的类维护索引)   整型便于比较大小(uuid比较大小麻烦)

  自增主键   

  hash不支持范围查找,存在hash冲突,效率比b的索引相对快一点

 

  复合索引的工作原理?

  索引是排好序的数据结构

  最左前缀原理(排好序的)

  

posted @ 2021-03-16 22:24  码处世界来  阅读(49)  评论(0编辑  收藏  举报