一、索引概念

索引的本质就是不断缩小想要查找到的数据的范围来筛选想要的结果,同时吧随机事件变成顺序事件

二、磁盘中的一些概念

扇区:磁盘存储的最小单位,一般为512Byte

磁盘块:文件系统与磁盘交互的最小单位

mysql中的页:与磁盘交互的最小单位,mysql内部的数据结构,大小为16kb,一个页中有4磁盘块,

mysql每次从磁盘中读取数据默认最小是16kb,要么不读,读了就是16kb,大小可以修改

三、B+树

m阶B+树特征:

1.每个节点之多m个子女(根据上图来说,就是每个节点最多有3个数据页子女)

2.有K个节点的关键字必有k个子女(拿数据页2来说,有2个关键字,就有开个数据页子女)

3.每个父节点都含有指向子节点的指针

4.父节点的关键字在子节点中存在,要么取子节点最大值,要么最小值,如果子节点是升序排列,则父节点关键字取最小值

5.最底层是叶子节点,只有叶子节点保存数据,其他节点只保存指针和关键字

6.叶子节点保存着所有关键字和数据,叶子节点之间还用指针连接

四、mysql的存储引擎和索引

mysql内部索引是由不同的引擎实现的,主要说一下InnoDB和MyISAM这两种引擎中的索引,这两种引擎中的索引都是使用b+树的结构来存储的

1.innodb中的索引

主键索引(聚集索引):每个表只有一个主键索引,叶子节点记录着主键和数据记录

辅助索引(非聚集索引):叶子结点记录着主键的值和索引字段的值

id为主键索引,name为辅助索引

检索过程

1.将每行的数据排序,存储到叶子节点,生成枝节点和根节点 完成主键索引

2.辅助索引的建立;创建辅助索引后,将创建索引那列同主键拿出来,排序,存储到枝节点和根节点

3.要检索id=14那列只需在主键索引里检索即可

4.要检索name = ‘Eillsion’ 要俩步

(1)在辅助索引中检索到name = ‘Eillsion’获取id值

(2)根据id值再在主键索引中检索

2.myisam存储引擎中的索引

不管是主键索引还是辅助索引结构都是一样的,叶子节点保存了索引字段的值以及数据记录的地址。

检索过程;

1.在索引中找到对应的关键字,获取关键字对应的地址

2.通过记录的地址查到相对应的数据记录

五、页结构

1.B+树叶子页之间间双向链表连接,能够实现范围查找

2.页内部数据记录用单向链表连接,方便查找

3.为了加快页内数据查找,在页内部加入了 稀疏索引,也叫页目录

总体来说mysql的索引 用到了B+树,链表,二分查找,能快速查找

mysql检索过程_mysql索引原理详解相关推荐

  1. mysql索引机制_mysql索引原理详解

    预备知识 什么是索引? 上一篇中有详细的介绍,可以过去看一下:什么是索引? 索引的本质:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机 ...

  2. MySQL索引原理详解

    MySQL索引原理详解 索引的本质 索引的分类 Hash 索引 二叉树 B树(二三树) B+树 主键目录 索引页 索引页的分层 非主键索引 回表 索引的本质 索引的本质是一种排好序的数据结构. 索引的 ...

  3. 玩转Mysql系列 - 第22篇:mysql索引原理详解

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第22篇. 背景 使用mys ...

  4. mysql 大量数据 更改索引_Mysql索引数据结构详解与索引优化

    本篇文章主要学习了MySQL的索引的数据结构的认识,做一个大概的了解即可. 一.索引 在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储数据结构,它是某个表中一列或若 ...

  5. mysql--innodb索引原理详解_MYSQL索引机制(InnoDB索引原理详解)

    索引定义和一些概念: 索引(Index)是帮助MySQL高效获取数据的数据结构. 我们知道,数据库查询是数据库的最主要功能之一.但每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据 ...

  6. 【图文动画详解原理系列】1.MySQL 索引原理详解

    MySQL简介 MySQL是一个开放源代码的关系数据库管理系统.原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用.2008年MySQL ...

  7. LiteDB源码解析系列(3)索引原理详解

    在这一章,我们将了解LiteDB里面几个基本数据结构包括索引结构和数据块结构,我也会试着说明前辈数据之巅在博客中遇到的问题,最后对比mysql进一步深入了解LiteDB的索引原理. 1.LiteDB的 ...

  8. InnoDB索引原理详解

    摘要: 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节. InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档).本着高效学习的目的,本 ...

  9. mysql.user表_mysql.user表详解

    GRANT语法: GRANT 权限 ON 数据库.* TO 用户名@'登录主机' IDENTIFIED BY '密码' 权限: ALL,ALTER,CREATE,DROP,SELECT,UPDATE, ...

最新文章

  1. 数字经济时代,什么是关键资源?(算力篇)
  2. 机器人编程语言学习哪门最好?5大热门编程语言推荐
  3. 查看并开启MySQL的log-bin和general_log日志
  4. 查看端口被占用的进程号然后结束进程(解决端口被进程占用的问题)
  5. python爬取网页表格数据匹配,python爬虫——数据爬取和具体解析
  6. 推荐几个Vue开发必备插件,要收藏
  7. NLP学习------HanLP使用实验
  8. 使用Nginx实现负载均衡
  9. OC小实例关于init方法不小心的错误
  10. js实现爬取QQ群管理页面所有QQ群成员信息
  11. http请求下载文件
  12. 在QT中使用映美精双目相机保存图片
  13. Win11任务栏不显示时间怎么办?Win11任务栏不显示时间的解决方法
  14. 《算法竞赛进阶指南》 荷马史诗
  15. QT菜单栏颜色与背景颜色设置
  16. 保姆级教程:python读取并绘制nc数据
  17. web应用开发平台,微信web开发者
  18. Saliency Filter
  19. ubuntu20.04搭建janus服务器
  20. c语言年历显示主要思路,c语言程序设计年历显示分析.doc

热门文章

  1. 基于wasm的探索与研究(三)
  2. CVPR 2022大会主席、港科大教授权龙:计算机视觉的现状与未来
  3. javascript函数以及对象
  4. wireshark网络抓包详解
  5. 数据湖 与 Lambda 架构
  6. Eurynome Cloud Athena 基于Spring Security OAuth2 的前后端分离脚手架
  7. 软件测试面试了十几家公司,全是这种“套路题”
  8. mac下申请开发者签名过程
  9. Mysql中Cast()函数的用法
  10. Q1营收19.4亿增收不增利,更名后的跟谁学如何走向“高途”?