树状图是一种

数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的

集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树

根结点 : A    父节点 : A是B,C的父节点 叶子节点:D,E是叶子节点 树的深度/树的高度:高度为3

B+树

前面讲了索引的基本原理,数据库的复杂性,又讲了操作系统的相关知识,目的就是让大家了解,任何一种数据结构都不是凭空产生的,一定会有它的背景和使用场景,我们现在总结一下,我们需要这种数据结构能够做些什么,其实很简单,那就是:每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生(B+树是通过二叉查找树,再由平衡二叉树,B树演化而来)。

b+树性质

索引字段要尽量的小:

通过上面的分析,我们知道IO次数取决于b+数的高度h,假设当前数据表的数据为N,每个磁盘块的数据项的数量是m,则有h=㏒(m+1)N,当数据量N一定的情况下,m越大,h越小;而m = 磁盘块的大小 / 数据项的大小,磁盘块的大小也就是一个数据页的大小,是固定的,如果数据项占的空间越小,数据项的数量越多,树的高度越低。这就是为什么每个数据项,即索引字段要尽量的小,比如int占4字节,要比bigint8字节少一半。这也是为什么b+树要求把真实的数据放到叶子节点而不是内层节点,一旦放到内层节点,磁盘块的数据项会大幅度下降,导致树增高。当数据项等于1时将会退化成线性表。

索引的最左匹配特性:

当b+树的数据项是复合的数据结构,比如(name,age,sex)的时候,b+数是按照从左到右的顺序来建立搜索树的,比如当(张三,20,F)这样的数据来检索的时候,b+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;但当(20,F)这样的没有name的数据来的时候,b+树就不知道下一步该查哪个节点,因为建立搜索树的时候name就是第一个比较因子,必须要先根据name来搜索才能知道下一步去哪里查询。比如当(张三,F)这样的数据来检索时,b+树可以用name来指定搜索方向,但下一个字段age的缺失,所以只能把名字等于张三的数据都找到,然后再匹配性别是F的数据了, 这个是非常重要的性质,即索引的最左匹配特性。

作者:村里唯一的架构师

mysql特效_MySQL树 – 前端开发,JQUERY特效,全栈开发,vue开发相关推荐

  1. Web前端技术分享:全栈工程师常用的开发工具

    全栈工程师,也叫全端工程师,是指掌握多种技能,并能利用多种技能独立完成产品的人.全栈工程师熟悉多种开发语言,同时具备前端和后台开发能力,从需求分析,原型设计到产品开发,测试,部署,发布全流程都十分熟悉 ...

  2. Web开发前端、后端与全栈的区别是什么?

    刚入门Web开发者总会听到前端开发.后端开发.全栈开发等岗位描述及相关介绍说明.很多人不清楚前端.后端.全栈到底指的是什么?对应岗位需求是什么?本文主要从三者概念.技术内容要求等角度对前端.后端及全栈 ...

  3. 前端和后端哪个工资高_前端、后端、全栈都是干嘛的?哪个薪资高?

    刚入门Web开发者总会听到前端开发.后端开发.全栈开发等岗位描述及相关介绍说明.很多人不清楚前端.后端.全栈到底指的是什么?对应岗位需求是什么? 俗话说"磨刀不误砍柴工",了解了互 ...

  4. 前端、后端、全栈都要学什么?薪资前景如何?

    随着信息产业的迅猛发展,IT行业人才需求量也在逐年扩大. 据国内权威数据统计,未来五年,我国信息化人才总需求量高达1500万-2000万人.其中"软件开发"."网络工程& ...

  5. 后端返回list前端如何处理_前端、后端、全栈是什么?薪资前景如何?

    随着信息产业的迅猛发展,IT行业人才需求量也在逐年扩大. 据国内权威数据统计,未来五年,我国信息化人才总需求量高达1500万-2000万人.其中"软件开发"."网络工程& ...

  6. 前端和后端的英文_前端、后端、全栈是什么意思?薪资怎么样?

    随着互联网行业的飞速发展,对专业的IT技能人才的需求量也随之变大. 据统计,未来五年,我国互联网人才需求量还会持续增长,预计需求量达到1500万-2000万,以软件开发为例,我国软件开发人才每年都在增 ...

  7. (Node+Vue+微信公众号开发)企业级产品全栈开发速成周末班

    (Node+Vue+微信公众号开发)企业级产品全栈开发速成周末班 从零到壹全栈部落 产品:个人独立博客,21点见 Vue + Node + MongoDB支持服务端渲染的博客系统(5天) 开发环境技术 ...

  8. 对前端、后端和全栈感兴趣的人,建议都看看!18年老程序员给你指点迷津

    各位读者朋友们好,我是龙叔,1名退休老码农,如果从工作算起的话我的码龄有18年,今天我来对前端.后端.全栈这3个方面分享一下我的见解,对于准备学编程或者刚学编程不久的小友,让我来给你们拨开迷雾. 看完 ...

  9. 软硬结合——写给硬件开发工程师的全栈入门实战

    特别注意: 教程已经迁移到:www.scaugreen.cn 软硬结合--写给硬件开发工程师的全栈入门实战 作者水平 读者水平要求 整个项目简单介绍 教程特点 为什么使用nodejs 开始 提问 提问 ...

最新文章

  1. 实时目标检测--Pelee: A Real-Time Object Detection System on Mobile Devices
  2. 多尺度人脸检测--Face Detection through Scale-Friendly Deep Convolutional Networks
  3. android jni 将BYTE* 和 jbyteArray 之间的转换
  4. matlab生成exe独立运行文件已破解(好用)
  5. 手把手教你用nodejs+SQL Server2012做增删改查
  6. 冲刺OPhone2.5:夏新已经下定决心
  7. python turtle详细教程_python 中的turtle使用教程
  8. 接口调用导致阻塞_RocketMQ与Dubbo之间线程之间如何阻塞和唤醒
  9. Eclipse中 搭建 Spring+SpringMVC+Mybatis整合(下)
  10. 特征工程(三):特征缩放,从词袋到 TF-IDF
  11. 移动医疗的服务怎么做?来听听传统医疗器械厂商怎么说
  12. 【转】:localStorage使用总结
  13. ISO14001与ISO45001都是什么认证?
  14. 在线计算机进制换算,进制转换计算器
  15. 数据中台之血缘篇:Atlas 详解
  16. php sybase存储过,SYBASE存储过程详解
  17. 计算机13E怎么转换成十进制,十六进制换算(进制转换计算器)
  18. c语言二维数组a中,a,a[0],a[0][0]的值与值的类型
  19. Proxmox VE(PVE)+ceph+物理网络规划-超融合生产环境安装部署案例
  20. 华为服务器显示红色的心跳,服务器的心跳线

热门文章

  1. 笨办法学python3.6 pdf_“笨办法”学Python3.pdf
  2. 学生电脑哪个牌子好_专卖工作服哪个牌子好
  3. 交通预测论文笔记:Spatio-Temporal Graph Convolutional Networks: A Deep Learning Frameworkfor Traffic Forecast
  4. 电脑销售技巧_汝州市,如何查询楼盘详细销售数据?官方公布,精确到房间
  5. 将tif文件转化为png文件 Python3
  6. ModuleNotFoundError: No module named ‘lib.utils.cython_bbox‘
  7. LeetCode题组:第13题-罗马数字转整数
  8. LeetCode-位运算-36. 只出现一次的数字
  9. Python 'takes exactly 1 argument (2 given)' Python error
  10. 【Cocosd2d实例教程四】Cocos2d实现人物原地走动