美文网首页
MySQL知识集

MySQL知识集

作者: ES_KYW | 来源:发表于2022-02-21 13:44 被阅读0次

    数据库引擎


    Innodb和MyISAM的区别

    Innodb 支持行锁 支持表锁 支持事务 支持外键 数据存储时索引和数据在一起
    MyISAM 支持表锁 不支持事务 数据存储方式 数据和索引两个单独的文件夹
    Innodb:.frm文件+.idb文件(包含数据和索引)
    MyISAM:.frm文件+数据文件+索引文件

    常见索引


    主键索引 唯一索引 普通索引 联合索引

    主键索引:叶子节点中存储全量数据
    唯一索引:索引键值不能重复
    普通索引:叶子节点中存储主键ID,不存储全量数据
    联合索引:对表中多个列进行索引,区别是联合索引的键值数量大于1,检索时遵循最左匹配原则。
    如联合索引(a,b),先对索引a进行排序,然后对索引b进行排序。b依赖于a,检索时如果a的索引失效,b的索引也会失效


    image.png

    索引类别


    聚簇索引 非聚簇索引

    1.叶子节点中顺序存储数据 如主键索引
    2.叶子节点中不存储全量数据,只存储主键ID 如普通索引
    普通索引检索时先查到叶子节点中的主键ID,然后回表查询,通过主键索引去查询全量数据

    索引查询


    覆盖查询 回表查询

    覆盖查询:只需要在一个索引树上能查询到所需数据,不需要回表查询全量数据
    回表查询:普通索引叶子节点只存储了索引值和主键ID,查询其它数据时需要根据主键ID进行聚簇索引查询,获取到全量数据

    索引数据结构


    B+树

    B+树和B树的区别,B+树中非叶子节点不存储数据
    B树和平衡二叉树的区别,B树节点中可存储多个键值

    1.非叶子节点只存储指针和索引键值,一个节点可存储多个键值,树的高度一般是3到4阶;
    2.数据查询的时候是分页查询,每页的磁盘空间大小是16kb;
    3.索引使用int或者varchar类型,取决于占用空间大小,int占用4个字节,大于4个字节的用int,小于4个字节的用varchar;
    4.联合索引遵循最左原则;
    5.索引并不是越多越好,越多占用磁盘空间越大,插入数据时越耗时;
    6.索引字段的长度越短越好,字段越短非叶子节点存储的键值越多;
    7.普通索引检索时先在非叶子节点中检索出主键的ID值,然后回表通过主键ID检索数据;
    8.在未设置主键的表中加入一条数据,会默认增加一条主键rowid;
    9.主键id最好设置成自增模式,索引数据存储是按序排列的,自增模式可以方便快速查询;

    相关文章

      网友评论

          本文标题:MySQL知识集

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