简介: 来说说索引吧
目的:为了加快数据库的数据查找速度,索引应用而生
基础知识
基本定义
  1 遍历 所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。
  3 深度 节点的层数
  4 NX树 宽度定义为具有最多结点数的层中包含的结点数。
数据模型的选择
   目的 为了让一个查询尽量少地读磁盘,就必须让查询过程访问尽量少的数据库
   1 让树容纳更多的子节点,也即是N叉数,N 叉树中的N取决于数据块的大小
   2 N 叉树由于在读写上的性能优点,以及适配磁盘的访问模式,已经在数据库中广泛应用了
问题系列
  1 为什么mysql提倡使用自增主键
      1 自增主键是顺序插入,不会引起页分裂,减少索引维护成本
      2 自增主键int类型越短,普通索引的叶子节点就越小,普通索引占用的空间也就越小
      3 采用pt-osc操作int自增主键类型的速度远远大于非自增长主键
  2  innodb为什么采用B+数索引

关于B+树你要知道的

     1 B+树是平衡多路查找树

2 B+树是多路查找树,一个节点能放n个值,n = 16K / 每个索引值的大小。
     3 B+树的路数为n+1,n是每个节点存在的值数量,例如每个节点存放16个值,那么这棵树就是17路。
     4 B+树索引并不能找到一个给定键值的具体行。B+树只能找到存放数据行的具体页,然后把页读入到内存中,再在内存中查找指定的数据

总结B+数能容纳更多的节点,存储更多的key,并且只有叶子节点存储data. 减少了磁盘IO的交互次数,提高了效率,所有的叶子结点和相连的节点使用链表相连,便于区间查找和遍历。

3 innodb的索引存储形式
     1 innodb每个索引都自己维护一个B+数索引
     2 主键索引的叶子节点包含data域,非主键索引的叶子节点对应的是主键值
            select * from b where id= 直接搜索id的B+数
            select * from b where k= 根据K先查询查询K的B+数,活的相应的主键,再到主键维护的B+数上寻找对应的数据

转载于:https://www.cnblogs.com/danhuangpai/p/9997028.html

mysql 原理 ~ 索引通说相关推荐

  1. Mysql原理-索引

    2. Mysql 索引 本篇学习总结是参考自小林的mysql文档资料. 索引只能定位到页,再通过页里的页目录去定位到某条具体的记录. innodb 索引页长这样: 每个节点都是一个数据页 只有叶子节点 ...

  2. 为了把mysql的索引底层原理讲清楚,我把计算机翻了个底朝天

    来自:非科班的科班 什么是索引 概念:索引是提高mysql查询效率的数据结构.总的一句话概括就是索引是一种数据结构. 数据库查询是数据库的最主要功能之一.设计者们都希望查询数据的速度能尽可能的快,因此 ...

  3. mysql六:索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  4. Mysql数据库索引原理及算法原理

    前言 面试的时候总会被提及一些关于数据库操作的问题,那么数据库索引作为一项热门问题,总会被问到.最近在网上看到了一篇关于mysql数据库索引的好文章,认真看完之后肯定受益匪浅,(虽说有的地方我不太理解 ...

  5. mysql 大量数据 更改索引_一文看懂ICP原理--MySQL用索引去表里取数据的一种优化...

    概述 今天主要介绍一下mysql的ICP特性,可能很多人都没听过,这里用一个实验来帮助大家加深一下理解. 一.Index_Condition_Pushdown Index Condition Push ...

  6. MySQL的索引原理,索引的类型有哪些,如何创建合理的索引,索引如何优化。

    欢迎大家关注我的公众号[老周聊架构],Java后端主流技术栈的原理.源码分析.架构以及各种互联网高并发.高性能.高可用的解决方案. 一.为什么需要索引? 索引是数据表种一个或者多个列进行排序的数据结构 ...

  7. MySQL联合索引原理解析

    什么是MySQL联合索引 联合索引又叫复合索引,是MySQL的InnoDB引擎中的一个索引方式,如果一个系统频繁地使用相同的几个字段查询结果,就可以考虑建立这几个字段的联合索引来提高查询效率. 如何建 ...

  8. mysql b tree索引原理_B+Tree原理及mysql的索引分析

    一.索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构. 我们知道,数据库查询是数据库的最主要功能之 ...

  9. [数据库] 一文读懂Mysql数据库索引实现原理

    咱们用了这么久Mysql数据库做项目,你知道数据是怎么存在数据库里吗?他们是如何存储的吗? 今天咱们就来扒一扒Mysql数据库索引的底层实现,Mysql数据库的索引是由都是由B+树实现的,那为什么不是 ...

最新文章

  1. pycharm中R工具包的安装
  2. java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句
  3. Zookeeper和 Google Chubby对比分析
  4. win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解
  5. 什么是SVC模式【转】
  6. OpenCV (iOS)中的形态学变换(11)
  7. go 判断元素是否在slice_golang 判断 两个slice 是否相等
  8. python更改整列小时分钟_利用python对excel中一列的时间数据更改格式操作
  9. Tomcat - SSL操作大全
  10. Flask项目之手机端租房网站的实战开发(十三)
  11. ospf-3型和5型汇总
  12. 笔记本计算机信号不强,增强笔记本WiFi无线信号的方法
  13. jupyter报错EnvironmentLocationNotFound: Not a conda environment: /root/anaconda3/envs/anaconda3
  14. tcp_sock_struct
  15. jenkins插件下载缓慢
  16. 智能扫描王 v1.0.0
  17. 迅为-IMX6UL开发板丨双网口丨双CAN总线丨4路USB HOST丨2路串口、6路插座引出,共8路串口丨1路RGB信号丨2路LVDS信号
  18. 淘宝、阿里、京东、腾讯等一线大厂都在用的搜索引擎技术,你确定不来看看?
  19. 74LS273 八D型触发器 功能介绍
  20. 请允许ActiveX控件和页面其他部分交互

热门文章

  1. Windows Server 2012 服务器之Web服务器
  2. Android Editext监听光标位置
  3. gridview、datalist、repeater、FormView、DetailsView的区别详解
  4. sysname数据类型是什么
  5. C++ 高质量程序设计指南读书笔记
  6. [HNOI2002]彩票
  7. mysql管理员操作
  8. linux安装jdk1.7
  9. 大道至简——失败也是积累
  10. Java troubleshooting guide