zoukankan      html  css  js  c++  java
  • 面试题:MySQL为什么使用B+树

    MySQL为什么使用B+树

    索引是帮助MySQL高效获取数据的数据结构。索引:排好序的快速查找数据结构!索引会影响where后面的查找,和order by 后面的排序。
    B+Tree索引(平衡多路查找树)
    是B-Tree的改进版本,同时也是数据库索引索引所采用的存储结构。数据都在叶子节点上,并且增加了顺序访问指针,每个叶子节点都指向相邻的叶子节点的地址。B-Tree需要获取所有节点,相比之下B+Tree效率更高。B+树索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问;

    image-20210204152105839

    hash:虽然可以快速定位,但是没有顺序,IO复杂度高。
    二叉树:树的高度不均匀,不能自平衡,查找效率跟数据有关(树的高度),并且IO代价高。
    红黑树:树的高度随着数据量增加而增加,IO代价高。

    为什么说B±tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
    B+tree的磁盘读写代价更低,B+tree的查询效率更加稳定
    数据库索引采用B+树而不是B树的主要原因:B+树只要遍历叶子节点就可以实现整棵树的遍历,而且在数据库中基于范围的查询是非常频繁的,而B树只能中序遍历所有节点,效率太低。
    B+树的特点
    (1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;
    (2)不可能在非叶子结点命中;
    (3)非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;

  • 相关阅读:
    用JS获取地址栏参数的方法(超级简单)
    返回前一页并刷新页面方法
    js 弹出确认 取消对话框
    微信“无法回答问题设置”失效
    百度地图api学习平台
    JQuery 定时器 (Jquery Timer 插件)
    select 框option添加属性 js计算价格 保持两位小数
    修改织梦分页标签样式
    一键导航
    关于memset赋值无穷大无穷小
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14372807.html
Copyright © 2011-2022 走看看