日常学习回顾与汇总(二)

20210511

mysql

复核索引:复核索引查询语句中必须包含索引前面的字段才会进行进行匹配,否则则不会使用索引。如果含有查询条件中含有全部索引,则顺序不重要。

1
2
3
4
5
CREATE INDEX idx_phone_name ON user(phone,name);
SELECT * FROM user_innodb where name = '1';--不走索引
SELECT * FROM user_innodb where phone = '2';--走索引 下同
SELECT * FROM user_innodb where phone = '2' and name = '1';
SELECT * FROM user_innodb where name = '1' and phone = '2';

索引的数据结构:

innodb默认索引数据结构是B+Tree,并且自增主键是保存到数据库中,如果重启会重新根据数据库中最大的主键进行开始。在mysql8中已经进行修改了。

  • 如果为二叉树查找树可能会导致形成一个链表

  • 平衡二叉树AVL

    任何节点的两个子树高度最大差别是1,也被成为高度平衡树。增加何删除可能需要一次或者多次树旋转来重新平衡这个树

  • B-Tree多路平衡查找树

    每个节点包含:本结点所含关键字的个数、指向父结点的指针、关键字、指向子结点的指针

聚集索引:聚集索引中键值的逻辑顺序和表中相应行的物理顺序相同。在innodb的设计中聚集索引包含整行的数据,所以innodb中索引就是数据本身,这就是大家常说的索引即数据。

非聚集索引:其实就是一个普通索引,但是非聚集索引不存储全部数据,只存储聚集索引的值(一般为主键id)

  • B+Tree

    B+ 树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一颗B+树包含根节点、内部节点和叶子节点,和B-Tree几乎一样,只不过B+Tree不再包含整行的数据了。B+ 树通常用于数据库和操作系统的文件系统中。B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树元素自底向上插入

    m阶的B+树:

    • 根结点至少有两个子女
    • 每个中间节点都至少包含ceil(m / 2)个孩子,最多有m个孩子
    • 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m
    • 所有的叶子结点都位于同一层
    • 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划

本文标题:日常学习回顾与汇总(二)

文章作者:wsylp

发布时间:2021年05月10日 - 17:05

最后更新:2021年05月11日 - 10:05

原始链接:http://wsylp.github.io/2021/05/10/“日常学习回顾与汇总-二/

许可协议: 本文为 wsylp 版权所有 转载请保留原文链接及作者。

-------------本文结束感谢阅读-------------