MySQL树索引

129 阅读1分钟
  • 二叉树

    • 查找时间复杂度O(logN)(有序的时OlogN)
    • 两个叶子 中序遍历,1>2<3
    • 缺点: 特殊情况下会链化 1→2→3→4 ,复杂度为O(N)
  • 平衡二叉树

    • 根节点会随着数据的改变而变更
    • 数据量越多,遍历次数越多,IO次数就越多,就越慢(磁盘的IO由树高决定)
  • B树

    • 数据存储时一个单元既有key 又有data
    • 每页存储空间有限,如果data过大,那key就少了,所以数据量大时,树深,磁盘IO增加,速度降低
  • B+树

    • 非叶子只存key,叶子结点存data

      • ,key从左到右,做小到大。右边结尾的数据会保留下一个左边数据的指针
      • 比B树存更多的key,所以树层级小,查询更快,查询速度稳定。
    • 数据的叶子结点具有天然排序功能

      • 叶子结点之间是有序双向链表,数据紧密,比B树更容易命中缓存
      • (非叶子结点之间是单向链表,页内部也是单向链表)
      • 全数据遍历更快,需要扫描叶子结点。