dede网站禁止ip访问,品牌宣传的推广,相亲网站怎么建设,用dw如何做网站mysql索引今天看了一些关于MySQL相关的东西#xff0c;来做一些碎碎念#xff0c;写这些可能只是觉得自己看东西老爱忘23333.先来看一组MySQL数据#xff0c;如图我们要查看最后id11的数据#xff0c;如果我们不加索引的话会怎样呢#xff1f;他会一条一条的比对#xff…mysql索引今天看了一些关于MySQL相关的东西来做一些碎碎念写这些可能只是觉得自己看东西老爱忘23333.先来看一组MySQL数据如图我们要查看最后id11的数据如果我们不加索引的话会怎样呢他会一条一条的比对直到最后一条加了索引他就不用一条一条比对了吗其实也不是这样理解的。我们先来看他如何进行一条一条比对我们数据库中的数据是存储在硬盘中的这是一种持久化的数据不同于我们程序中的数据(程序中的数据是易失的程序结束就没了这其实就是我们内存的特性)如果我们需要比对第一步要做的是把数据库硬盘中的数据加载进内存例如比对开始第一条数据id1从硬盘加载进内存与我们程序中的sql语句(select id from user where id11)进行比对发现id不等于11于是接着把id2加载进内存如此下去直到id11程序结束。此过程我们可以发现如果我们要查询id11要进行11次把数据从硬盘加载进内存的操作这就是我们常说的磁盘IO操作磁盘IO操作非常耗费时间的仅仅这样一个查询就要11次IO操作……我还有个不成熟的例子我们大家都有那种一个软件半天才打开的经历吧这就是一个把硬盘数据加载进内存的过程也就是磁盘IO操作类比于我们现在这个表中的查询如果要进行11次这样的操作有点吓人是不是。那么我们如果可以在插入数据的时候同时维护一棵二叉排序树这样我们在查找的时候是不是可以节省不少时间二叉排序树就是一棵左儿子小于本身右儿子大于本身的二叉树不详细说了。这样我们就可以从查找O(n)的复杂度降低到O(lgn)。但是又有问题了如图所示事实上这样的二叉排序树非常常见像不像我们的链表链表相比于数组的坏处就是查找麻烦这种退化为链表的二叉排序树已经没有查找的优越性了。由此人们又研究出来AVL排序树叫法很多平衡树啊AVL查找树啊都是这个。如图平衡树的确很好但是还是有问题平衡树要求叶子节点的高度差不能大于1这个要求其实过于苛刻事实上随便一个操作都能打破这种平衡平衡树就需要左旋右旋来进行矫正但是左旋右旋操作也是非常耗费时间的所以就有了红黑树红黑树先比较于平衡树最大的区别就在于他放宽了进行左旋右旋的条件。但是我们知道MySQL索引底层用的也不是红黑树其实是B树那么B树又改进了红黑树什么特性呢红黑树说到底还是一种二叉树在我们数据量足够大的情况下二叉条件下树的深度还是非常大的避免不了进行很多次磁盘IOB树简单来说就是一种多叉排序树将深度转换为宽度。