04|深入浅出 <索引>(上)

04|深入浅出索引(上) | 八九. | 思维导图(新) | ProcessOn

密码:VyY9


 

  1. 简单概念

    索引的出现其实就是为了提高数据查新的效率,就像书的目录一样。
  2. 索引的常见模型
    1. 搜索树


      mysql用到的是B+树
    2. 有序数组

       
      有序查询在 等值查询和范围查询场景中的性能就都非常优秀
      类似于数据的机构,查询就会很快,但是新增的时候就会比较慢
       

      所以有序数组只适用于静态存储引擎
      数据不会发生变化的数据适合

    3. 哈希表
      这个就是类似于hashmap的原理相类似
      哈希表这种数据结构适用于只有 等值查询的场景
       

      优点:增加数据时候,速度快,只需要在后面做追加
      缺点:不是有序的,所以哈希索引做区间查询(就是范围查询,比如 in(12,14,15))的是书读会很慢 

  3. InnoDB的索引模型

    1. 使用b+树,每一个索引在innodb里面对应一颗B+树

    2. 索引的类型

      1. 主键索引(聚簇索引) 数据和索引是在一起的

      2. 非主键索引(非聚簇索引) 也称为二级索引:即数据和索引的不放在一起

  4. 索引维护

    1. 主键自增与主键非自增

      1. 如果用自增主键,就是在递增数据的时候在最下面那行直接自动添加数据
        如果用非自增主键,主键的值就需要我们自己手动添加(不如身份证号)

      2. 主键的长度,我们还需要考虑到主键的回表操作,
        每个二级索引使用回表时,我们所用的就是主键
        显然:主键长度越小,普通索引的叶子节点就越小,普通索引占用的空间就越小

  5. 扩展

    1. B+树叶子节点存的是page页,一个页里面可以存多个行

    2. 如果插入的数据在主键树叶子节点的中间,后面的所有页如果都是满的状态,不会造成后面的每一页进行页分裂

    3. 插入数据如果在某个数据满了页的首位,为了减少数据移动和页分裂,会先去前后两个页看啊可能是否满了,如果没满会先将数据放到前后两个页上

    4.  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腊Rou单车

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值