B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?

    • ~~B-Tree~~
    • ==B+Tree==
  • ~~二叉树(Binary Search Tree~~
  • ~~红黑树(Red/Black Tree~~
  • ~~Hash索引~~

B-Tree

1.叶节点具有相同的深度,叶节点的指针为空;
2.所有索引元素不重复;
3.节点中的数据索引从左到右递增排序。

B+Tree

1.非叶子节点不存储数据,只存储索引(冗余),目的是:可以存放更多的索引;
2.叶子结点包含所有索引字段;
3.叶子结点用指针连接,可以提高区间访问的性能

二叉树(Binary Search Tree

若将Col2作为索引,每个节点都会存放索引的字段值key+磁盘地址value,是会节省查找时间;
若将Col1作为索引,则会生成一个右子树,并不能简化查找时间。
所以二叉树不能作为MySQL索引底层数据结构。

红黑树(Red/Black Tree

红黑树也称二叉平衡树,即插入一个节点,会自动做一个平衡,节点左小右大;
弊端:当数据量很大的时候,查找次数也会变多。

Hash索引

hash表其实就是数组+链表
1.对索引的key进行一次hash计算就可以定位出数据存储的位置;
2.很多时候Hash索引比B+Tree索引更高效;
3.仅能满足“=”,“IN”,不支持范围查找
4.Hash冲突(很少发生)。

B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?相关推荐

  1. 二叉树 红黑树 B树 B+树的优缺点

    前言 在MySQL中,无论是Innodb还是MyIsam,都使用了B+树作索引结构(这里不考虑hash等其他索引).本文将从最普通的二叉查找树开始,逐步说明各种树解决的问题以及面临的新问题,从而说明M ...

  2. java 二叉树 红黑树_常见数据结构(二)-树(二叉树,红黑树,B树)

    常见数据结构(二)-树(二叉树,红黑树,B树) 标签: algorithms [TOC] 本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自course ...

  3. java二叉树红黑树,二叉树与红黑树

    BST 二叉查找树就是一颗二叉树,他的左节点比父节点要小,右节点比父节点要大.他的高度决定的查找效率. 理想状态下,二叉树的增删改查的时间复杂度为O(LogN),最坏的情况为O(N).当他的高度为Lo ...

  4. mysql索引 红黑树_为什么MySql索引使用B+树?

    前言 面试中我们经常碰到面试官问到数据库索引,问到索引就会问你索引的数据结构.类似这种数据结构对于普通程序员来说记住概念几天就忘了,而且概念不是每个人都能很好都理解,所以针对这一原因,我简单通俗都像大 ...

  5. 【动态图文详解-史上最易懂的红黑树讲解】手写红黑树(Red Black Tree)

    红黑树:一棵自平衡(AVL)+二叉查找树(BST) 什么是红黑树 红黑树,Red-Black Tree 「RBT」是一个自平衡(不是绝对的平衡)的二叉查找树(BST). 红黑树是在1972年由Rudo ...

  6. 红黑树下岗,内核新数据结构上场:maple tree!

    在外界看来,Linux 内核的内部似乎变化很少,尤其是像内存管理子系统(memory-management subsystem)这样的子系统.然而,开发人员时常需要更换内部接口来解决某些长期存在的问题 ...

  7. 关于hash,hashCode, hashMap,红黑树

    小刘老师讲HashMap源码 小刘老师讲红黑树 hash,hashCode,hashMap 1.前提知识 数组: 列表: 散列表 什么是hash? hash也称散列,哈希,基本原理就是把任意长度的输入 ...

  8. 红黑树和二叉树有什么区别?

    红黑树和二叉树有什么区别? 什么是二叉树?什么是红黑树? 二叉树(Binary Tree)是指每个节点最多只有两个分支的树结构,即不存在分支大于 2 的节点,二叉树的数据结构如下图所示 这是一棵拥有 ...

  9. 讲透学烂二叉树(五):分支平衡—AVL树与红黑树伸展树自平衡

    简叙二叉树 二叉树的最大优点的就是查找效率高,在二叉排序树中查找一个结点的平均时间复杂度是O(log₂N): 在<讲透学烂二叉树(二):树与二叉/搜索/平衡等树的概念与特征>提到 二叉排序 ...

最新文章

  1. .net环境故障处理
  2. Linux进程管理之ps的使用
  3. mysql 如何提高批量导入的速度
  4. 21秋期末考试土力学与地基基础10445k1
  5. mysql主从表结构差异_mysqldiff对比主从表结构是否一致
  6. Spring中部署Activiti流程定义的三种姿势
  7. 富文本编辑器 CKeditor 配置使用
  8. 西门子s7删除注册表,西门子S7200编程软件卸载步骤
  9. 希捷7200.11固件门完全DIY修正方法! 不用几块钱, DIYers请进!!!
  10. 虚拟机怎么安装操作系统 虚拟机怎么安装win7系统教程
  11. fedora 安装 pidgin-lwqq
  12. msdn突然无法使用,打开的页面无法正常显示。
  13. 喜欢的歌——隐形的翅膀(张韶涵)
  14. 数据库的学习MySQL
  15. Snort - manual 笔记(二)
  16. html5知识点:超文本标记语言编程
  17. Java自学全套视频(jse,jee,ssh,android,oracle,linux,html,js,jQuery等)下载地址
  18. JAVA项目:后台管理页面——显示数据库中所有信息+删除和编辑(MySQL)
  19. python宝典 宋强 pdf_Python宝典
  20. MQTT协议详解 二、MQTT控制包格式

热门文章

  1. Linux系统编程12:进程入门之进程的优先级及PR和NI如何修改进程优先级
  2. 怎样重建一个损坏的调用堆栈(callstack)
  3. SSM项目调用Dao层查询方法传入正确参数但查不到数据
  4. Tensorflow实现多层感知函数逼近
  5. SQLAlchemy 教程 —— ORM 方式使用示例
  6. twisted系列教程十四— pre-fireed deferred
  7. String 源码解析
  8. Careercup - Microsoft面试题 - 5752271719628800
  9. 多个集合合并成没有交集的集合-实现
  10. 【微软亚洲研究院院长洪小文专访---谈大学生实习就业】