MySQL索引本质解析

华为OD机试真题 新系统 2026-04-22 Python&JS 实现【小学生班长选举增强版】 9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学: 阅读详情

一、什么是索引

  • 索引是对数据库表中一列或多列的值进行排序的数据结构。
  • 表面层次来讲,索引就像一本书的目录,可以快速访问数据库表中的特定信息。
  • 深层次来看,索引是帮助MySQL高效获取数据的排好序的数据结构,这个数据结构可以是平衡二叉树、红黑树、Hash表、B-Tree、B+Tree

二、索引数据结构解析

演化:二叉树——红黑树——B-Tree——B+Tree

1、排序二叉树

假设有一表:t
在这里插入图片描述
有一sql语句:select * from t where t.col2=89
无索引时,进行全表遍历,直到符合条件,如图需要遍历6次。
以col2建立索引(假设该索引以二叉树去实现,实际大都以B树或B+树),则有:
在这里插入图片描述
那么根据排序二叉树“左小右大”性质,只需要两步就找到“89”的指针地址,再根据该指针到磁盘做一次IO,便可以找到想要的那一行数据。

2、红黑树

排序二叉树的弊端:当以col1这类递增列为索引时,树的结构变成链表结构
在这里插入图片描述
这样一来就与全文索引无区别。
优化——红黑树:当单边节点超过3个,会自动平衡,则上述结构变成:
在这里插入图片描述
红黑树是一种含有红黑节点并能自动平衡的二叉查找树。
性质:

  • 根节点和叶子节点(NIL或NULL)都是黑色的。
  • 每个红色节点的两个子节点一定都是黑色。
  • 任意一节点到每个叶子节点的路径都包含数量相同的黑节点。

3、B-Tree

红黑树缺点,如上图,当持续有序递增加入节点数据时,会出现左空右满的情况,导致树的高度太高
优化: 限制高度,扩展宽度。每个节点存储多个数据。每个又可以分叉,形成多叉平衡树。eg:
在这里插入图片描述
特性:

  • 叶节点具有相同的深度,叶节点指针为空。
  • 所有索引元素不重复。
  • 节点中的数据索引从左到右递增排序。
  • 当查找某个节点时,将该节点放到内存RAM中快速查找。

为什么不全部放到一个节点,一起放到RAM查找?
因为内存是有限的。因此设置每个节点大小为16KB。

4、B+Tree(B-Tree的变种):MySql的最终选择

特性:

  • 非叶子节点不存储数据(data),只存储索引(冗余),可以放更多的索引(每个节点16KB)
  • 叶子节点包含所有索引字段
  • 叶子节点用指针连接,提高区间访问性能
    在这里插入图片描述
    叶子节点存放所有Data,并以链表形式呈现,体现两大特点:大数据存储、大规模查询(有序)
    扩展——聚集索引和非聚集索引的区别:
  • 聚集索引(主键、聚簇索引):叶子节点存放整条记录(索引字段+数据),不需要回表。
  • 非聚集索引(非主键、普通、二级索引):叶子节点存放索引值和磁盘地址指针,需要回表。
    详情见——存储引擎。

5、B树和B+树的区别

a、B树的每个节点都存储了key和data,B+树的data存储在叶子节点上。节点不存储data,这样一个节点就可以存储更多的key。可以使得树更矮,所以IO操作次数更少。

b、树的所有叶子节点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。

三、MySQL常见存储引擎(形容对象:表)

1、MySQL的基本逻辑架构图

在这里插入图片描述
由图可知,逻辑架构包括Server层和存储引擎层。其中Server层包括连接器,分析器,优化器以及执行器;存储引擎包括多种支持的存储引擎。各个逻辑部件的作用如下:

  • 连接器: 验证客户端权限,建立和断开MySQL链接。
  • 分析器: 进行SQL语句的语法分析。
  • 优化器: 选择索引,生成具体的SQL语句执行计划。
  • 执行器: 操作存储引擎,执行SQL,返回执行结果。
  • 存储引擎层: 各个不同的存储引擎都提供了一些读写接口来操作数据库。

在MySQL5.5版本之后,InnoDB已经成为了其默认的存储引擎,也是大部分公司的不二选择,毕竟谁家公司会不要求数据库支持事务呢?谁家公司又可以忍受表级锁导致的读写冲突呢?
除了InnoDB以及MyISAM存储引擎外,常见的考擦存储引擎还有Memory,使用Memory作为存储引擎的表也可以叫做内存表,将数据存储在了内存中,所以适合做临时表来使用,在索引结构上支持B+树索引和Hash索引。

2、聚簇索引和非聚簇索引

a. 聚簇索引也称为主键索引,其索引树的叶子节点中存的是整行数据,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚簇索引。因为索引(目录)只能按照一种方法进行排序。

b、非聚簇索引(普通索引)的叶子节点内容是主键的值。在InnoDB里,非主键索引也称为二级索引。这里需要注意的是:InnoDB的索引储存是聚簇索引。InnoDB里面没有非聚簇索引,更加准确的叫法是辅助索引或二级索引。非聚簇索引针对MyISAM引擎而言。

3、MyISAM存储引擎索引实现

MyISAM索引文件、数据文件是分离的(非聚簇),eg:表test_myisam的文件图如下:
在这里插入图片描述
结构图如下:
在这里插入图片描述
MyISAM存储引擎索引实现称为“非聚集索引”,B+Tree的叶子结点只存放主键的值和其内存地址指针,需要根据该地址回到内存中(test_myisam.MYD中)找到对应的一行数据,该过程也称为“回表”。
附加(草稿图):
在这里插入图片描述

4、InnoDB存储引擎索引实现

(1)、InnoDB索引实现(聚集)

  • 表结构文件本身就是按B+Tree组织的一个索引结构文件。
  • 叶子节点包含了完整的数据记录。
  • 为什么InnoDB表必须有主键,并且推荐使用整型的自增主键?(可以叶子链表快速查找数据)。
  • 为什么非主键索引结构叶子节点存储的是主键值?(一致性和节省存储空间)。

(2)、结构
eg:表test_innodb的文件图:
在这里插入图片描述
表的结构图:
在这里插入图片描述

  • 当你的InnoDB表没有设置主键,它会自动帮你选一个能够唯一标识字段(无重复)作为默认字段,如果找不到该字段,则自动生成一列作为标识性字段来维护(建立)一棵B+Tree。
  • 为什么InnoDB表必须有主键,并且推荐使用整型的自增主键?
    (可以叶子链表快速查找数据)因为我们B+Tree结构每个节点从左到右是依次递增的。意味着我们存放该索引值时要比较大小,整型数据易于比较,如果是字符串“ABCD”一类的,要逐个字母去从头比较到尾。而且整型占内存小(2个字节)。另外,如果该字段已经告诉计算机为“自增”就不必再比较排序大小了。

附加(草稿图):
在这里插入图片描述

5、Hash索引

相当于每个索引做一次Hash结果(加密),就可以快速找到对应数据在磁盘的位置(地址)。
缺点:像select * from t where t.col = 6 单个索引值来说速度最快(所有索引数据结构中),但不支持连续查询,eg:“coll>6”。而B+Tree叶子结点是递增且都由指针链接,如找“t>20”,只需找叶子节点20再顺着指针向后找即可。非常方便千万级数据规模查询。

6、索引最左前缀原理

在这里插入图片描述

四、MySQL常见面试题

1、B树和B+树的区别?

  • B树的每个节点都存储了key和data,B+树的data存储在叶子节点上。节点不存储data,这样一个节点就可以存储更多的key。可以使得树更矮,所以IO操作次数更少。
  • 树的所有叶子节点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。

2、为什么底层数据结构使用B+树,而不是B树?

  • B+树是B树的变种,B+树的非叶子节点只用来保存索引,不存储数据,所有的数据都保存在叶子节点;而B树的非叶子节点也会保存数据。这样就使得B+树的查询效率更加稳定,均为从根节点到叶子节点的路径。
  • B+树的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小,同样空间可以读入更多的节点,所以B+树的磁盘读写代价更低。

3、MySQL常见的存储引擎有哪些?

MySQL中最常见的存储引擎有InnoDB和MyISAM,它们主要区别如下:

  • MyISAM不支持事务;InnoDB是事务类型的存储引擎。
  • MyISAM只支持表级锁;InnoDB支持行级锁和表级锁,默认为行级锁。
  • MyISAM引擎不支持外键;InnoDB支持外键。
  • 对于count(*)查询来说MyISAM更有优势,因为其保存了行数。
  • InnoDB是为处理巨大数据量时的最大性能设计的存储引擎。
  • MyISAM支持全文索引(FULLTEXT);InnoDB不支持。

总结:最主要的区别就是MyISAM表不支持事务、不支持行级锁、不支持外键。InnoDB表支持事务、支持行级锁、支持外键。

4、MySQL事务有哪些特性?

事务是单个逻辑工作单元执行的一系列操作,是一个不可分割的工作单位。满足如下的四大特性:

  • 原子性(Atomicity): 事务作为一个整体被执行,要么全部执行,要么全部不执行。
  • 一致性(Consistency): 保证数据库状态从一个一致状态转变为另一个一致状态。
  • 隔离性(Isolation): 多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
  • 持久性(Durability): 一个事务一旦提交,对数据库的修改应该永久保存。

5、MySQL中的锁机制?

MySQL数据库的锁分为表级锁和行级锁。从数据库的角度看,行级锁又可以分为独占锁和共享锁。

  • a、独占锁(排它锁),也称X锁(Exclusive Lock):
    独占锁锁定的资源只允许进行锁定操作的程序使用,其他任何对它的操作均不会被接受。执行数据更新命令,即INSERT、UPDATE或DELETE命令时,MySQL会自动使用独占锁。但当对象上有其它锁存在时,无法对其加独占锁。独占锁一直到事务结束才能被释放。
    在select命令中使用独占锁的SQL语句为:select …for uodate。
  • b、共享锁,也叫S锁(Shared Lock):
    共享锁顾名思义,那就是其锁定的资源可以被其它用户读取,但其它用户不能修改。如果在select查询语句中要手动加入共享锁,那么对应的SQL语句为:select …lock in share mode。
    这里需要注意:
    一个事务在一行数据上加入了独占锁,那么其余事务不可以在该数据行上加入任何锁。也就是说加过排它锁的数据行在其他事务中是不能修改数据的,也不能通过for uodate和lock in share mode锁的方式查询数据,但可以直接通过select…from…查询数据,因为普通查询没有任何锁机制。

6、MySQL建表的约束条件有哪些?

约束条件是我们建表的时候对数据库表做的一个限制条件。MySQL建表时候一般有如下的五个约束条件:

  • 主键约束(Primay Key Coustraint): 唯一性,非空性。
  • 唯一约束(Unique Counttraint): 唯一性,可以空,但只能有一个。
  • 检查约束(Check Counstraint): 对该列数据的范围、格式的限制。
  • 默认约束(Default Counstraint): 该数据的默认值。
  • 外键约束(Foreign Key Counstraint): 需要建立两表间的关系并引用主表的列。
CUDA&PCL 点云体素下采样 阅读详情

相关推荐

树莓派CM4 PCIe扩展方案与ASM1184e芯片应用

PCIe(Peripheral Component Interconnect Express)是计算机硬件中重要的高速串行总线标准,广泛应用于存储、网络等设备连接。其核心原理是通过差分信号实现高带宽传输,PCIe Gen2 x1的理论带宽可达5Gbps。在嵌入式开发中,PCIe扩展技术能有效解决单板计算机接口不足的问题,特别适合树莓派等微型平台。ASMedia ASM1184e作为PCIe交换芯片,可将单个接口扩展为多个,支持热插拔且免驱动,极大提升了工程灵活性。通过PCIe交换机方案,开发者能在树莓派CM

weixin_42602368的博客 421

InnoDB非主键索引结构叶子节点为什么存储的是主键值而不是像MyiSAM索引存储数据地址?

1.保持一致性,当数据库表进行DML操作时,同一行记录的页地址会发生改变,因非主键索引保存的是主键的值,无需进行更改; 2.节省存储空间,后续补充,不太清楚原因。 参考链接:https://blog.youkuaiyun.com/a1_HelloWord/article/details/104341349 ...

a1_HelloWord的博客 4236

Codex Skill:AI编程助手的专项能力扩展与实战指南

在AI编程助手领域,Skill(技能)是一种标准化的能力扩展机制,它通过封装特定任务所需的指令、资源和脚本,解决AI模型在专项任务上的能力局限。其核心原理是将专业知识和工作流程模块化,让通用AI助手能够像领域专家一样执行复杂任务。从技术价值看,Skill不仅提升了代码生成的准确性,更重要的是实现了业务流程的自动化集成,如代码规范检查、API文档生成等具体场景。这种机制特别适用于需要结合内部工具链和特定业务逻辑的企业环境,能够显著提升开发效率和质量。通过安装PPT生成、SpringBoot项目创建等专项Ski

weixin_33672109的博客 413

为什么非主键索引结构叶子结点存储的是主键值?

1. 保持一致性: 当数据库表进行DML操作时,同一行记录的页地址会发生改变,因非主键索引保存的是主键的值,无需进行更改。 2. 节省存储空间: Innodb数据本身就已经汇聚到主键索引所在的B+树上了, 如果普通索引还继续再保存一份数据,就会导致有多少索引就要存多少份数据。 ...

weixin_44057343的博客 3450

052、联发科Imagiq HyperEngine架构适配:天玑9000/9200的ISP多核并行调度与Tuning Toolkit调优案例

摘要: 项目组在适配联发科天玑9200的Imagiq 890 ISP架构时,遇到多摄预览功耗过高、帧率不稳等问题。通过分析多核调度机制,调整辅核QoS通道、优化AI-ISP协同模式(采用FREERUN+运动补偿),并利用Tuning Toolkit的Pipeline Viewer动态分配负载,最终降低功耗30mA、提升画质。关键经验包括:避免多核带宽冲突、合理配置动态时钟策略,以及统一校准参数版本管理。天玑9000/9200的HyperEngine架构需优先理解多核协同逻辑,再针对性调优,否则易引发场景兼容

zzfmlxs的博客 36

rk3568 rk628桥片hdmi转lvds

RK628 是瑞芯微全新推出的视频桥接芯片,支持丰富的显示接口,支持高分辨率大屏产品转换需求。基于DRM、FB的显示框架易于使用。 输入信号支持:HDMI、RGB、BT.1120,输出信号支持 HDMI、GVI、Dual LVDS、Dual MIPI、MIPI-CSI、RGB、BT.1120,最高支持4K 60fps 输入/输出转换,并且支持输入到输出 1/4~4倍的缩放。

weixin_35723192的博客 1131

面试题整理(4)

每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。 1. 什么是B+树?   B+树是一种树的数据结构(可以类比平衡二叉树),特点是能保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,与二叉树相反。   1、非叶子节点不存data,只存key,可增大度。   2、数据只存在叶子节点。对于MyISAM,叶子节点存指针;对于InnoDB,普通索引叶子节点存主键,主键索引叶子节点存一行数据。   3、叶子节点本身依关键码的大小自小而大的顺序连接,区间访问

weixin_43849539的博客 324

EtherCAT从站EEPROM组成信息详解(2):字8-15产品标识区

以实际的从站EEPROM数据为例,参照EtherCAT的SII规范,详细分析了从站EEPROM字8-字15的产品标识区内容组成。

kevin1499的博客 719

Mysql学习(一)-- 索引

A table can contain a maximum of 64 secondary indexes.A maximum of 16 columns is permitted for multicolumn indexes. Exceeding the limit returns an error. ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed

weixin_39724194的博客 1876

刷机维修进阶教程-----oppo机型 一加 7pro 修复基带 更改参数 实例详细步骤解析

通过课程基本可以了解 1-----oppo机型与一加7机型更改参数的具体步骤解析 2------了解oppo机型开启diag端口的具体步骤 3-----了解一加7这些机型改参数常识 。可以借鉴参考用于其他机型 4-----了解手机基带分区与基带辅助分区的作用 5-----机型参数能读取到 但不能写这种情况如何操作

小马哥的专栏 1478

机器学习笔记:估算模型训练所需的样本量的方法

相反,如果训练得分高而交叉验证得分低,那么模型可能存在过拟合问题,需要更多的样本来提高泛化能力。本文将介绍一些常用的方法来估算模型训练所需的样本量,并提供相应的源代码。除了经验法则和学习曲线法,还有一些统计学方法可以用于估算模型训练所需的样本量。学习曲线是一种通过绘制模型性能与样本量之间的关系曲线来估算样本量的方法。需要注意的是,这些方法仅提供了估算样本量的指导,具体的样本量仍然需要根据实际情况进行调整和优化。通过合理估算样本量,可以提高机器学习模型的性能和泛化能力,从而更好地应用于实际问题中。

HnrzLinux的博客 2732

mysql优化——1.索引底层原理

mysql索引个人相关理解 每天多学一点点~ 话不多说,这就开始吧… 文章目录mysql索引个人相关理解1.索引到底是什么2.B-Tree3.B+Tree(B-Tree变种)4.MyISAM索引实现(非聚集)5.INNodb索引实现(聚集)6.联合索引7.结语 1.索引到底是什么 索引是帮助MySQL高效获取数据的排好序的数据结构 索引存储在文件里 索引结构 二叉树 红黑树 HASH BTREE...

爆裂无球的程序空间 837

手把手教你学simulink(8.39)--基于Simulink的步进电机(Stepper Motor)仿真实例

通过这个仿真实例,你可以学习如何使用Simulink构建和仿真步进电机(Stepper Motor)系统。你可以根据实际需求调整模型和参数,进行更复杂的仿真和分析。希望这个例子对你有所帮助,祝你学习愉快!

MHD0815的博客 1052

深入解析MySQL索引:本质、分类、选择及使用原则

索引作为数据库中的一种核心数据结构,对于提高数据查询效率具有至关重要的作用。通过深入理解索引的本质、分类、选择及使用原则,我们可以更好地设计和优化数据库索引,从而提高数据库的性能和响应速度。在选择索引数据结构时,B+树凭借其高效的性能、稳定的数据结构和广泛的适用性成为了首选。同时,不同的存储引擎在索引支持、事务处理等方面各具特点,我们需要根据业务需求和数据特性进行权衡和选择。在使用索引时,我们应遵循一定的原则和方法来确保索引的有效性和高效性。

喜欢猪猪 910

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mysql 索引本质解析

索引时帮助mysql高效获取数据的排好序的数据结构 索引数据结构: 二叉树, 红黑树, Hash表, B-Tree树 如果不加索引, 那么就需要逐行去遍历表数据.数据量少的话可能不觉得什么,但是数据一多,效率便会很低. 数据是存在磁盘上的,每查询一次便会进行一次磁盘IO 假设索引用二叉树的数据结构进行存储,每插入一条数据,同时会将索引的字段维护到二叉树. 二叉树的节点里是以key-value格式进...

我想起个名字的博客 280

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MySql索引的本质的简单解析

索引的本质的解析 什么叫慢查询: SQL默认有个规定:只要10秒钟没有按照规定的时间返回结果,都属于慢查询。 怎么优化呢?–:可以通过索引进行优化。 索引是帮助MySql高效的获取数据的排好序的数据结构。 索引数据结构: 二叉树,红黑树,Hash表,B-Tree 表中有两列七行。我们查找第6行数据,如果没有索引我们查询的时候是 select * from t where t.Col2 =89; 如果没有索引的时候,数据库时进行逐行检查对比的,进行查找的。 如果表很大,那么就会查询很久。 假设使用二叉树的数

雪落无痕的博客 337

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

mysql:深度解析MySQL选择B+树作为索引结构的本质原因

业务场景优化手段预期收益指标超高并发点查缩短键长度+增大填充因子QPS提升30%~50%海量数据范围查询冷热分离+压缩叶子节点查询延迟降低60%+混合读写负载使用FPGA加速B+树遍历吞吐量提升3倍SSD环境调整innodb_io_capacity参数IOPS利用率提高40%阿里内部数据:在双11大促中,经过B+树优化的订单库可支撑峰值58万次/秒的查询请求,平均延迟<5ms。-- 检查页利用率。

weixin_43290370的博客 946

MySQL索引深入解析:理解索引的本质、分类、选择和最佳实践

MySQL索引是数据库中不可或缺的优化工具,通过合理使用索引可以大大提升查询性能。理解索引的工作原理、选择合适的索引类型和存储引擎,并根据实际业务需求进行优化,是每个开发者应该掌握的技能。在实际项目中,遵循索引使用的最佳实践,能够在保证性能的同时,避免潜在的性能瓶颈。希望本文为你提供了一个全面的MySQL索引解析,帮助你更好地理解并应用索引,提升数据库性能。

一碗黄焖鸡三碗米饭的博客 1496

mysql 内部解析树_【MySQL】索引的本质(B+Tree)解析

索引是帮助MySQL高效获取数据的排好序的数据结构。索引数据结构二叉树红黑树Hash表B-TreeMySQL所使用为B+Tree (B-Tree变种)非叶子节点不存储data,只存储索引(冗余),可以放更多的索引(说白了就是每一次索引查询都要查询到叶子节点)叶子节点包含所有索引字段叶子节点用指针连接,提高区间访问的性能我们看下这个动图来了解一下B+Tree的形成结构: 8 5 15 18 2 11...

weixin_28853079的博客 648

【MySQL】索引的本质(B+Tree)解析

索引是帮助MySQL高效获取数据的排好序的数据结构。 索引数据结构 二叉树 红黑树 Hash表 B-Tree MySQL所使用为B+Tree (B-Tree变种) 非叶子节点不存储data,只存储索引(冗余),可以放更多的索引(说白了就是每一次索引查询都要查询到叶子节点) 叶子节点包含所有索引字段 叶子节点用指针连接,提高区间访问的性能 我们看下这个动图来了解一下B+Tre...

cuotieken4635的博客 80

MySQL 索引失效全解析:从 B+ 树结构看透每一条规则的本质

失效场景破坏了 B+ 树的什么本质违反最左前缀排序链断裂,后续列全局无序找不到起点索引列函数/运算原始值有序 ≠ 计算后有序值域被改写LIKE 左模糊前缀未知,无法定位起始节点找不到起点OR 含非索引列需要全表扫描才能合并结果扫描成本反超隐式类型转换等价于对索引列加了 CAST 函数值域被改写索引失效的本质就是破坏了 B+ 树的有序性——要么找不到起点,要么排序链断裂,要么值域被改写,导致 MySQL 无法利用索引的快速定位能力,只能退化为全表扫描。

2301_79963518的博客 397

Mysql索引本质

前言 对于Mysql的学习,不能仅仅是学会sql增删改查 还要对数据库优化有一定的认识 前面总结了一些常用的sql命令:Mysql常用命令总结 接下来学习优化 推荐一个数据结构演示网站:Data Structure Visualizations 目录 索引的使用 1.1. 普通索引(NORMAL) 1.2. 唯一索引(UNIQUE) 1.3. 主键索引(PRIMARY KEY) 1.4. 全文索...

key_768的博客 529

MySQL之索引分享

索引本质 官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构 本质:索引是数据结构 Innodb B-Tree 索引 B+树成因: 我们知道,每一种数据结构的出现都是为了解决特定的问题,那么B+树的出现是为了解决什么问题,那就是:每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。在理解B+树结构之前,先提一下计算机的局部性原理:当计算机访问一个地址的数...

sky_100的博客 387

简单易懂 MySQL 高级部分 —— 索引篇

前言:本文所有内容基础来源于 高性能MySQL(第三版)目前仅支持 MySQL5.5及之前的版本,对于之后的版本,可能会有些许误差,但是我会尽量提醒,如果有未指出的误差,或者是文章中的错误,请多多指教。 目录一、索引基础1.1 什么是索引1.2 索引的本质与类型二、索引的优点三、高性能索引策略四、索引案例学习五、维护索引表六、总结 本文是MySQL高级篇,不会再过多赘述其中有关于 CRUD 的指令。若有问题,请自行百度。 另外,本文可能会涉及众多不是口水的口水话,若想要快速学习索引的同学可以点击右上角.

MR_优快云D的博客 264

索引的本质解析

索引的本质:帮助MySQL高效获取数据的排好序的数据结构。 **不建索引需要多次磁盘IO。 将根节点索引一次加载到内存中做比较,即:15,56,77同时加载到内存中,完成一次磁盘IO。MySQL规定一次加载大小为16k。 MySQL索引底层数据结构为B+树: 存储引擎是作用于数据表的: myisam:三个文件:(1)frm(2)MYD: data,存储数据(3)MYI:index,存储索引 ...

Tommy_____的博客 316

初识MySQL索引

MySQL索引

分享思想,留下痕迹。 485
上一篇: JVM底层实现原理(字节码执行细节与垃圾回收)
下一篇: JAVA的多线程、死锁、线程间通信、如何规避死锁、线程安全的单例模式【转载】
Senye_ing
博客等级 码龄8年 24粉丝 21原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Senye_ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值