Mysql索引相关

2018-11-25  本文已影响7人  黑小鹰

此文章主要回答以下问题:
1 、索引数据结构演变
2 、mysql索引数据结构

mysql索引的演变

线性结构:首先不得不提的是线性结构,无论是数组还是链表检索多的数据,其性能降低,这样逐条检索的效率不用多说

线性结构.jpg
二叉树搜索树:二叉树搜索树有效的降低了检索数据的时间复杂度 二叉搜索树.jpg
但是当二叉排序树的不平衡性导致时间复杂度大大下降
二叉搜索树特.jpg
此时又有了AVL树,类似于红黑树下面按照红黑树来说
红黑二叉查找树:红黑树的宁一种定义是含有红黑链接并且满足下列条件的二叉查找树:

mysql索引数据结构

MyISAM的索引方式也叫做“非聚集”的

MyisamPrimarykey.jpg

InnoDB存储引擎采用的是B+树作为索引结构


InnoDB聚集索引(主键).png

mysql聚集索引,从问题入手

问题1、为什么Innodb表需要主键?

问题2、为什么不建议Innodb表主键设置过长?

问题3:为什么建议InnoDB表主键是单调递增?

mysql二级索引

Mysql二级索引.png

二级索引叶子节点存储的不再是行的物理位置,而是主键值。
通过辅助索引首先找到的是主键值,再通过主键值找到数据行的数据叶,再通过数据叶中的Page Directory找到数据行。

推荐一个网站:数据结构可视化里面包含各种数据结构可视化显示,能够其过程动态展示,良心推荐
重点:参考资料这篇博客是是你必须要读的文章,无论你是看懂我这篇文章没有,还是觉得我这篇文章多差,都建议你花至少半小时详细读
参考资料:
MySQL索引背后的数据结构及算法原理

·

上一篇 下一篇

猜你喜欢

热点阅读