美文网首页
从磁盘IO的角度来看待索引

从磁盘IO的角度来看待索引

作者: AlexWillBeGood | 来源:发表于2021-01-03 21:30 被阅读0次
    MySQL索引是一个B+树,相对于普通的平衡二叉树来说每个节点指向更多的节点,相对于B(B-)树来说,只有叶子节点存储真实的数据。 image.png image.png

    因为B+树的检索方式应当:

    • InnoDB存储引擎中,主键尽量避免使用很长的字段
      叶子节点上存储的是主键,较小的主键的长度能够减低树的高,减少IO的次数。

    • 在保障索引区分度的情况下,被索引字段尽量不要太长
      普通索引上,非叶子节点存储的是被索引的字段,被索引字段太长也会影响到树高,B+树中每一个节点就是一个Page(16k),每增加一层就会多一次IO。但是需要考虑索引区分度,找到最合适的索引值。
      下图可看出,取前4-5位作为索引最合适:


      image.png

      添加前缀索引:


      image.png
    • 查询中可以利用索引覆盖,索引下推,避免不必要的回表
      索引覆盖,索引下推能减少回表次数,提高速度。

    • 不要建立太多索引
      技术没有银弹!

    相关文章

      网友评论

          本文标题:从磁盘IO的角度来看待索引

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