当前位置: 首页 > article >正文

MySQL的索引——提高查找算法的数据结构 B+树

我们MYSQL服务器是在内存中的,所以所有的操作也是内存级的,索引也是如此
我们要提高算法的效率:首先要用一个好的数据存储结构储存数据,然后结构决定算法
所以——索引的本质就是一种提高算法效率组织的数据结构

缩印的主要价值体现在海量数据的检索(查询)速度

一个表中有成万条数据,输入直接查找某条的话需要花费的时间就很长,而且这还只是本机一个人操作,如果把MySQL服务器放入公网,让很多用户来查询的话,所花费的时间将更长
在这里插入图片描述
给要查找的字段加上索引后(构建数据结构):
在这里插入图片描述
在这里插入图片描述

索引是如何实现的呢?

我们知道数据库中的表就是文件,文件是存在磁盘中的,Mysq中的CURD操作都是需要计算然后找到对应的数据的,计算一定用到CPU,所以一定是要把数据库文件中的数据拿到内存中的。如果只是操作系统的文件系统对磁盘文件IO,那么每次就只能IO 4KB的数据,这样做在MYSQL层面看来IO效率就很低,所以在MYSQL中也有自己的缓冲内存,他向系统缓冲区每次拿取的数据是16KB,每次拿取的16KB就是一个page.——目的:为何更高的效率,一定要尽可能的减少系统和磁盘IO的次数
在这里插入图片描述

但是只是这样也不能快速提高查找效率,所以针对每个page数据块我们都要组织管理起来,然后所有的page用一个数据结构管理起来,然后根据这个数据结果,决定出他的高效查找效率:

目录页**B+**树的思想
在这里插入图片描述
在这里插入图片描述

为何不用其他数据结构:
链表:线性查找慢
搜索二叉树:如果插入的树是有序的,那么就退化为线性了
AVL&&红黑树:只有二哥叉,就意味着树的高度要更高,系统与硬盘更多的IO Page交互
hash:也有支持的,叶子不是连续的,但在范围查找上不具备
B树:除了叶子节点外,其他节点也会储存数据,更高更多的page


http://www.kler.cn/a/314286.html

相关文章:

  • 探索 Python HTTP 的瑞士军刀:Requests 库
  • 分享 pdf 转 word 的免费平台
  • 基于RK3568J多网口电力可信物联网关解决方案
  • LabVIEW大数据处理
  • 如何保护 Microsoft 网络免受中间人攻击
  • 如何判定linux系统CPU的核心架构
  • Qt容器类控件——QGroupBox和QTabWidget
  • 计算机网络(月考一知识点)
  • Windows安装Oracle11gR2(图文教程)
  • Docker部署ddns-go教程(包含完整的配置过程)
  • 基于 K8S kubernetes 搭建 安装 EFK日志收集平台
  • 深度学习实战93-基于BiLSTM-CRF模型的网络安全知识图谱实体识别应用
  • CTC loss 博客转载
  • C++(2)进阶语法
  • 职业技能大赛-自动化测试笔记分享-2
  • 长亭WAF绕过测试
  • Spring AI Alibaba,阿里的AI Java 开发框架
  • 【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
  • C语言CRC16_CCITT_FALSE函数法和查表法实现
  • ArcGIS10.2/10.6安装包下载与安装(附详细安装步骤)
  • Unity坐标系求向量的模长
  • 【深度学习|可视化】如何以图形化的方式展示神经网络的结构、训练过程、模型的中间状态或模型决策的结果??
  • 常用卫星学习
  • sql语句在mysql中的执行过程
  • 大数据-143 - ClickHouse 集群 SQL 超详细实践记录!
  • 运维工程师面试整理-团队协作