美文网首页
理解:数据库索引&数据结构

理解:数据库索引&数据结构

作者: 梦工厂 | 来源:发表于2018-03-14 01:35 被阅读91次

    理解,为什么选择B+Tree做数据库的索引

    1. 二分查找法
      有序数组中查找某一特定元素,折半查找。O(logn)


      很明显,对于无序的数据建立索引并不适合。
    2. Binary Search Tree 二叉查找树


      二叉查找树的时间复杂度为O(log n),但是最坏情况下是O(n),不平衡。

      二叉查找树不适合作为索引的原因:
      • IO不好:平衡问题,节点数据少深度高;(AVL树,红黑树)
      • 范围查找不好;
    3. B-Tree B树


      B树解决的问题:IO (平衡 + 节点数据多深度小)
      B树没有解决的问题:范围查找
    4. B+Tree


      B+Tree是B-Tree的变种。
      1)节点可以存放更多的key(数据地址只放在叶子节点上)
      2)叶子节点双向相连接,方便范围查找。
    5. B+Tree索引区别
      MySQL不同的存储引擎的B+Tree索引也不太一样。
      MyISAM:叶子节点存放数据的地址; 索引和数据分离


      InnoDB:叶子节点存放实际的数据;
      InnoDB默认按照主键的顺序来存放记录,辅助索引的叶子节点数据是相应的主键;


      聚集索引:索引中键值的逻辑顺序决定了表中相应行的物理顺序。 (叶子节点存数据)
      非聚集索引:索引的逻辑顺序与磁盘上行的物理存储顺序不同。 (叶子节点存地址)
    6. 备注
      码农翻身学习,B+树定义好像不太一样,重在理解选择过程。


    @梦工厂 2018.3.14

    相关文章

      网友评论

          本文标题:理解:数据库索引&数据结构

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