美文网首页
mysql相关笔记

mysql相关笔记

作者: xin激流勇进 | 来源:发表于2020-09-17 11:07 被阅读0次

    explain 执行计划

    type

    1、all
    全表扫描
    2、index
    全索引扫描
    3、range
    从索引中查找
    4、ref
    返回所有匹配某个单个值的结果
    5、eq_ref
    最多返回一条符合条件的结果,通常用在唯一索引和主键索引上

    extra

    1、use index
    使用索引覆盖,查询索引就可以找到需要的数据
    2.use where
    需要会表进行查询
    3、use filesort
    对结果使用外部索引排序
    4、use temporary
    对查询结果进行排序时,使用临时表,一般用于排序、分组和多表join

    key

    mysql实际使用的索引

    为什么要使用索引

    1、加快查询数据的速度
    2、帮助数据库避免排序和创建临时表
    3、随机io变成顺序io
    4、通过创建唯一索引,保证数据库中数据的唯一性

    索引缺点

    1、索引会影响增删改的速度,每一次修改数据都会额外去维护索引
    2、创建的索引会占用物理空间

    hash索引和b+树索引

    1、hash索引只适合等值查询,无法进行范围查找
    2、用hash索引查出的数据无法进行排序。
    3、存在多个值相同的情况,效率会变得很慢,存在哈希碰撞
    4、hash索引不支持多列联合索引的最左匹配原则

    索引分类

    1、 主键索引
    2、 普通索引
    3、 唯一索引
    4、 组合索引(最左前缀)
    唯一索引和主键索引的区别在于主键索引不能为null

    红黑树和avl树在内存中使用的数据结构,因为不可能将数据库中的数据全部加载的内存中,
    因此使用红黑树会造成频繁io,导致效率低下

    b树和b+树
    b树
    1、书内存储数据
    2、叶子节点无链表
    b+树
    1、叶子节点存储数据
    2、叶子节点存储数据

    如何避免回表:
    查询数据尽量走索引
    索引覆盖:
    一个组合索引包含了满足查询结果的数据

    mysql索引失效

    1、范围查找之后的条件不会用到索引
    2、where后面接表达式
    3、发生隐性转化

    几种常见平衡树的比较

    avl树

    avl树是一种绝对平衡的树,即左右子树的高度差不大于1,添加或者删除元素
    通过翻转来维持平衡。

    b树

    b树也是一种平衡树,现对于avl树,它的每一层节点存放的数据更多,树的高度
    遍地,减少了io的次数。b树的查找速度不够稳定,在进行范围查找的时候,需要
    进行中序遍历,增加了io的次数。

    b+树

    b+树所有的数据都存放在叶子节点,并且用链表进行连接,因此在进行范围查找时,
    会很方便。由于非叶子节点不存储数据,因此可以存储更多元素,可以减少io查询次数。

    相关文章

      网友评论

          本文标题:mysql相关笔记

          本文链接:https://www.haomeiwen.com/subject/xgklyktx.html