码迷,mamicode.com
首页 > 数据库 > 详细

mysql索引_1_Mysql_Learning_Notes

时间:2018-11-15 22:41:39      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:sea   图片   现在   有序   ODB   cin   链接   自旋   mysql索引   

mysql索引_1_Mysql_Learning_Notes

一种在有序数组中查找某一特定元素的搜索算法;
二分查找法的优点是比较少次数,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难,因此二分查找方法适用于不经常变动而查找频繁的有序列表.

  • innodb 要求聚集索引列都要求是有序自增列.innnodb 是事务型的存储引擎,其中的行总是会被删除并提交,count(*) 相对要慢一些.

    二叉树,binary tree

  • 二叉树的每个节点至多只有二棵子树(不存在大于2的节点),二叉树的子树有左右有序之分,次序不能颠倒.左子树一定小于根,右子树一定大于根.根节点是子节点的中间节点.

          4
  1               10

平衡树,平衡二叉树,Self balancing binary search tree

  • 改进的二叉查找树.一般的二叉查找树的查询复杂度是跟目标节点到树根的距离(深度)有关,因此当前节点的深度普遍较大时,查询的均摊复杂度会上升.为了更高效的查询就有了平衡树.
  • 平衡二叉树的特点:
    • 它是一棵空树或其左右两个子树的高度差的绝对值不超过1(比如左边高度是6,右的高度只能是5或7),且左右两个子树也是平衡二叉树.
    • 不平衡的树会通过自旋变成平衡树.
    • 平衡树和二叉查找树最大的区别是:前者是平衡的,后者不一定.
    • 数据库里使用平衡二叉树,如果有插入值很大可能会导致其自旋?.
      技术分享图片

      B树,balanced tree(平衡多叉树)

  • 又称B-树\B_树
  • B树,一个节点可以拥有多于2个的子节点的多叉查找树
  • 适合大量数据的读写操作,普遍运用在数据库和文件系统.
  • 一棵m阶(比如m=4阶)的B树满足以下条件.
    • 树中每个节点至多有m个(4个)子节点
    • 除根节点和叶子节点外,其它每个节点至少有m/2个(2个)子节点.
    • 若根节点不是叶子节点,则至少有2个子节点.
    • 所有叶子节点都出现在同一层,叶子节点不包含任何键值信息.
    • 有k个子节点的非叶子节点恰好包含有k-1个键值(索引节点)

      记录中应该用‘节点‘还是‘结节‘,baidu了一下,有师兄解释:一个节点是两线相交,中间的点,另一个结点是最后的点。二叉树好像特别一点,是结点,叶子结点和非叶子节点(但不确定正确性,我就所有都用节点了)

      B+树,与B树不同点在:

  • 有n棵子树对的节点(node)中含有n-1个关键字(key),每个关键字不保存数据,只用来索引,所有数据都保存在叶子节点.
  • 所有的叶子节点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子节点本身依关键字的大小自小而大顺序链接.
  • 所有的非叶子节点可以看成是索引的部分,节点中仅含其子树(根节点)中的最大(或最小)关键字.
  • 在MySQL中,为了方便,直接写成BTREE

mysql索引_1_Mysql_Learning_Notes

标签:sea   图片   现在   有序   ODB   cin   链接   自旋   mysql索引   

原文地址:https://www.cnblogs.com/2woods/p/9966009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!