mysql索引底层原理
1 概念索引在MySQL中也叫是一种“键”是存储引擎用于快速找到记录的一种数据结构。 2 原理及分类 索引的目的在于提高查询效率与我们查阅图书所用的目录是一个道理 先定位到章然后定位到该章下的一个小节然后找到页数。 索引是一个排序的列表在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址 使用索引后可以不用扫描全表来定位某行的数据而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。优势可以快速检索减少I/O次数加快检索速度根据索引分组和排序可以加快分组和排序劣势1 索引本身也是表因此会占用存储空间一般来说索引表占用的空间的数据表的1.5倍2 索引表的维护和创建需要时间成本这个成本随着数据量增大而增大3 构建索引会降低数据表的修改操作删除添加修改的效率因为在修改数据表的同时还需要修改索引表InnoDB索引实现表数据本身就是按BTree组织的一个索引结构文件而聚集索引idb主键索引叶子节点包含完整的数据记录节点数据限制保护内存消耗即所有字段值idb文件包含表的数据和索引 frm文件存储 表结构的信息数据 1170个key每页1000个数据为什么必须有主键为何整型递增隐藏的主键是一个6个字节的列该列的值会随着数据的插入自增mysql的底层是以btree实现的数据记录本身被存于主索引一颗BTree的叶子节点上。同一个叶子节点内大小为一个内存页或磁盘页的各条数据记录按主键顺序存放MySQL会根据其主键将其插入适当的节点和位置如果页面达到装载因子InnoDB默认为15/16则开辟一个新的页节点整型是为了便于顺序查询以及范围查询。如果使用uuid字符串范围比较查询消耗大存储空间也大比较又需要asii转化对于自身便于做分页以及顺序存放顺序访问指针提高区间的访问性能叶子节点存所有字段自增ID可以用来做分页优化。如下语句性能相差1000倍1. Select * from tbl limit 10000000,30;2. Select * from tbl where id10000000 limit 30;Myslam索引 数据文件和索引文件分离 非聚集索引myiindex文件 索引字段存储数据 myd文件表数据 frm表结构定义数据叶子节点 主键索引存储磁盘文件指针data磁盘存储原理寻道时间长旋转时间短MySQL支持诸多存储引擎而存储引擎对索引的支持也各不相同因此MySQL数据库支持多种索引类型如BTree索引BTree索引哈希索引全文索引等等1、哈希索引只有memory内存存储引擎支持哈希索引哈希索引用索引列的值计算该值的hashCode然后在hashCode相应的位置存执该值所在行数据的物理位置因为使用散列算法因此访问速度非常快但是一个值只能对应一个hashCode而且是散列的分布方式因此哈希索引不支持范围查找和排序的功能。2、全文索引FULLTEXT全文索引仅可用于MyISAM和InnoDB针对较大的数据生成全文索引非常的消耗时间和空间。对于文本的大对象或者较大的CHAR类型的数据如果使用普通索引那么匹配文本前几个字符还是可行的但是想要匹配文本中间的几个单词那么就要使用LIKE %word%来匹配这样需要很长的时间来处理响应时间会大大增加这种情况就可使用时FULLTEXT索引了在生成FULLTEXT索引时会为文本生成一份单词的清单在索引时及根据这个单词的清单来索引。FULLTEXT可以在创建表的时候创建也可以在需要的时候用ALTER或者CREATE INDEX来添加3、BTree索引BTree是平衡搜索多叉树设树的度为2dd1高度为h那么BTree要满足以一下条件每个叶子结点的高度一样等于h每个非叶子结点由n-1个key和n个指针point组成其中dn2d,key和point相互间隔结点两端一定是key叶子结点指针都为null从左向右递增非叶子结点的key都是[key,data]二元组其中key表示作为索引的键data为键值所在行的磁盘文件指针4、BTree索引BTree是BTree的一个变种BTree中的非叶子结点不存data只存储键值key可以增大度节点数据存储个数BTree所有键值都会出现在叶子结点上且key存储的键值对应data数据的物理地址BTree的叶节点具有相同高度顺序访问指针提高区间访问的性能提升查找速度的关键就在于尽可能少的磁盘I/O那么可以知道每个节点中的key个数越多那么树的高度越小需要I/O的次数越少因此一般来说BTree比BTree更快因为BTree的非叶节点中不存储data就可以存储更多的key。储引擎在BTree的基础上进行了优化添加了指向相邻叶节点的指针形成了带有顺序访问指针的BTree这样做是为了提高区间查找的效率只要找到第一个值那么就可以顺序的查找后面的值https://blog.csdn.net/tongdanping/article/details/

相关新闻

精选50题之 11. 盛最多水的容器

精选50题之 11. 盛最多水的容器

腾讯精选练习(50 题)之 11. 盛最多水的容器原题目链接直接尝试题目分析解题思路代码实现写在最后原题目链接 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线&a…

2026/7/28 19:28:18阅读更多 →
物联网安全实践:SE050与STM32F412RE硬件加密方案

物联网安全实践:SE050与STM32F412RE硬件加密方案

1. 物联网安全现状与SE050的定位在2023年的物联网安全态势报告中,全球每天新增的物联网设备达到惊人的150万台,而其中近70%的设备存在可被利用的安全漏洞。这个数字背后反映的是一个残酷的现实:物联网设备正在成为黑客攻击的"软肋"…

2026/7/28 19:26:18阅读更多 →
Java设计模式(三):基本介绍

Java设计模式(三):基本介绍

设计模式分为 三种类型,共 23 种 创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模…

2026/7/28 19:26:18阅读更多 →
别再手动kubectl了!花10分钟搞懂ArgoCD,让Kubernetes部署彻底自动化

别再手动kubectl了!花10分钟搞懂ArgoCD,让Kubernetes部署彻底自动化

别再手动kubectl了!花10分钟搞懂ArgoCD,让Kubernetes部署彻底自动化从“手动敲命令”到“Git一推自动部署”的GitOps入门指南一、先问自己一个问题:你还在手动kubectl吗?想象一下这个场景:你开发完一个微服务&#xff…

2026/7/28 20:42:45阅读更多 →
JAVA毕业设计-基于 SpringBoot+Vue 的校园教学资源共享互助系统前后端分离的高校学生互助交流与资源分享平台 (源码+LW+部署文档+全bao+远程调试+代码讲解等)

JAVA毕业设计-基于 SpringBoot+Vue 的校园教学资源共享互助系统前后端分离的高校学生互助交流与资源分享平台 (源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 20:42:45阅读更多 →
花了3小时排坑,我终于搞懂了ArgoCD到底运行在哪里

花了3小时排坑,我终于搞懂了ArgoCD到底运行在哪里

花了3小时排坑,我终于搞懂了ArgoCD到底运行在哪里 一次从sed命令找不到到GitOps灵魂觉醒的排坑实录 一、一切从一个"找不到"开始 作为一个刚入坑GitOps的萌新,我信心满满地在Windows PowerShell里敲下了这行命令: powershell se…

2026/7/28 20:42:45阅读更多 →
Unity资源逆向工程完整指南:AssetStudio深度解析与实战应用

Unity资源逆向工程完整指南:AssetStudio深度解析与实战应用

Unity资源逆向工程完整指南:AssetStudio深度解析与实战应用 【免费下载链接】AssetStudio AssetStudio is an independent tool for exploring, extracting and exporting assets. 项目地址: https://gitcode.com/gh_mirrors/ass/AssetStudio AssetStudio是一…

2026/7/28 20:42:45阅读更多 →
JAVA毕业设计-基于 SpringBoot 的前后端分离的高校大学生心理健康互助社区平台 面向大学生的线上心理疏导与交流支持系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

JAVA毕业设计-基于 SpringBoot 的前后端分离的高校大学生心理健康互助社区平台 面向大学生的线上心理疏导与交流支持系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 20:42:45阅读更多 →
AI辅助Python编程入门:从零搭建环境到实战项目开发

AI辅助Python编程入门:从零搭建环境到实战项目开发

很多朋友想学 Python,但面对海量教程和复杂环境配置,往往还没开始就放弃了。传统的学习路径需要自己安装环境、配置 IDE、手动调试,一个简单的语法错误可能就要卡半天。现在,借助 AI 编程助手,学习 Python 的门槛被大幅降低。你可以像拥有一个随时在线的编程导师,它能帮你…

2026/7/28 20:40:45阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →