深入理解MySQL 的 索引

索引是一种用来快速检索数据的一种结构, 索引使用的好不好关系到对应的数据库性能方面, 这篇文章我们就来详细的介绍一下数据库的索引。

1. 页面的大小: B+ 树索引是一种 Key-Value 结构,通过 Key 可以快速查找到对应的 Value。B+ 树索引由根页面(Root)、分支页面(Branch)和叶子页面(Leaf)组成一棵树的结构。InnoDB 中,索引页面的大小由参数 innodb_page_size 控制,默认为 16K。

在这里插入图片描述

2. 行的大小: innoDB 对行的长度有一定的限制,每行记录的长度不能超过页面大小的一半。对于 16K 的页面大小,1 行记录最长大概在 8000 字节多一点。如果 1 行记录平均长度为 200 字节,那么一个页面最多可以容纳八十多行记录

3. key, value:

  • 在分支页面中,Value 存了下一层索引页面的编号(Page No),页面编号就是页面在数据文件中的地址。
  • 而在叶子页面中,Value 又是什么呢?
    对于 InnoDB 的二级索引,你可以认为叶子页面中不存 Value,
    而对于聚簇索引,Value 是表里面的所有字段。
type keyValue struct {t uint8 //表示对应的类型key any // 表示对应的keyvalue any // 表示存储的值, 
}

我们先看一下面这段SQL 代码:

create table t_user(id int not null,username varchar(30),email varchar(128),phone varchar(15),login_time datetime,key idx_username(username),primary key(id)
);

在innodb 中,表中的数据是按照对应的聚簇索引的形式来进行存储的, 聚簇索引的key 字段为表结构中的 primary key 指定的字段, 如果不指定对应的字段, 则会以非空的唯一索引作为Primary key, 活着对应的innodb 自动生成一个隐藏的字段作为 Primary key

在上面中我指定了对应的 primary key 为对应的 id 字段, 所以Id 就作为对应的默认索引,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/10509.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot项目如何使用MyBatis实现分页查询及其相关原理

写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…

LabVIEW温度修正部件测试系统

LabVIEW温度修正部件测试系统 这个基于LabVIEW的温度修正部件测试系统旨在解决飞行器温度测量及修正电路的测试需求。该系统的意义在于提供一个可靠的测试平台,用于评估温度修正部件在实际飞行器环境中的性能表现,从而确保飞行器的安全性和可靠性。 系统…

动态规划每日一练(四)

一、day1——最长数对链 题目链接&#xff1a; 646. 最长数对链 - 力扣&#xff08;LeetCode&#xff09;646. 最长数对链 - 给你一个由 n 个数对组成的数对数组 pairs &#xff0c;其中 pairs[i] [lefti, righti] 且 lefti < righti 。现在&#xff0c;我们定义一种 跟随…

对比category_encoders库和sklearn库中的OrdinalEncoder

OrdinalEncoder 是用来对数据中的分类特征进行编码、转换为整数标签的函数。 category_encoders库 from category_encoders import OrdinalEncoder 安装&#xff1a;pip install category_encoders --trusted-host pypi.tuna.tsinghua.edu.cn&#xff08;记得关闭代理&#x…

【PLL】杂散生成和调制

时钟生成 --》 数字系统 --》峰值抖动频率生成 --》无线系统 --》 频谱纯度、 周期信号的相位不确定性 随机抖动&#xff08;random jitter, RJ&#xff09;确定性抖动&#xff08;deterministic jitter,DJ&#xff09; 时域频域随机抖动积分相位噪声确定性抖动边带 杂散生成和…

理解神经网络:Brain.js 背后的核心思想

温馨提示 这篇文章篇幅较长,主要是为后续内容做铺垫和说明。如果你觉得文字太多,可以: 先收藏,等后面文章遇到不懂的地方再回来查阅。直接跳读,重点关注加粗或高亮的部分。放心,这种“文字轰炸”不会常有的,哈哈~ 感谢你的耐心阅读!😊 欢迎来到 brain.js 的学习之旅!…

Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成

Ubuntu下的DoxygenVScode实现C/C接口文档自动生成 Chapter1 Ubuntu下的DoxygenVScode实现C/C接口文档自动生成1、 Doxygen简介1. 安装Doxygen1&#xff09;方法一&#xff1a;2&#xff09;方法二&#xff1a;2. doxygen注释自动生成插件3. doxygen注释基本语法4. doxygen的生成…

Java内存模型 volatile 线程安全

专栏系列文章地址&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标&#xff1a; 认识JMM认识volatile关键字&#xff1a;可见性和顺序性理解线程安全的概念 目录 Java内存模型可见性例子和volatilevolatile如何保证可见性原子性与单例模式…

【Proteus仿真】【51单片机】多功能计算器系统设计

目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 联系作者 一、主要功能 1、LCD1602液晶显示 2、矩阵按键​ 3、加减乘除&#xff0c;开方运算 4、带符号运算 5、最大 999*999 二、使用步骤 基于51单片机多功能计算器 包含&#xff1a;程序&…

three.js+WebGL踩坑经验合集(4.1):THREE.Line2的射线检测问题(注意本篇说的是Line2,同样也不是阈值方面的问题)

上篇大家消化得如何了&#xff1f; 笔者说过&#xff0c;1级编号不同的两篇博文相对独立&#xff0c;所以这里笔者还是先给出完整代码&#xff0c;哪怕跟&#xff08;3&#xff09;没有太大区别。 这里我们把线的粗细调成5&#xff08;排除难选中的因素&#xff09;&#xff…

SAP内向交货单详解

【SAP系统研究】 #SAP #交货单 #内向交货单 一、内向交货单的概念 内向交货单,Inbound Delivery,是SAP系统中用于管理外部供应商或内部工厂向公司发货的文档。它记录了货物从供应商到公司仓库或生产地点的运输和接收过程。 内向交货单的主要功能有: (1)货物接收:用于…

扩展无限可能:Obsidian Web Viewer插件解析

随着 Obsidian 1.8.3 正式版的发布&#xff0c;备受期待的官方核心插件——Web Viewer 也终于上线。本文将从插件启用、设置以及应用场景三个方面详细介绍如何使用这一新功能&#xff0c;和大家一起更好地利用 Obsidian 进行内容管理和知识整理。 插件启用 Web Viewer作为官方…

如何在 ACP 中建模复合罐

概括 本篇博文介绍了 ANSYS Composite PrepPost (ACP) 缠绕向导。此工具允许仅使用几个条目自动定义高压罐中常见的悬垂复合结构。 ACP 绕线向导 将必要的信息输入到绕组向导中。重要的是要注意“参考半径”&#xff0c;它代表圆柱截面的半径&#xff0c;以及“轴向”&#x…

本地搭建deepseek-r1

一、下载ollama(官网下载比较慢&#xff0c;可以找个网盘资源下) 二、安装ollama 三、打开cmd&#xff0c;拉取模型deepseek-r1:14b(根据显存大小选择模型大小&#xff09; ollama pull deepseek-r1:14b 四、运行模型 ollama run deepseek-r1:14b 五、使用网页api访问&#x…

OpenCV:闭运算

目录 1. 简述 2. 用膨胀和腐蚀实现闭运算 2.1 代码示例 2.2 运行结果 3. 闭运算接口 3.1 参数详解 3.2 代码示例 3.3 运行结果 4. 闭运算的应用场景 5. 注意事项 相关阅读 OpenCV&#xff1a;图像的腐蚀与膨胀-CSDN博客 OpenCV&#xff1a;开运算-CSDN博客 1. 简述…

Docker技术简介

Docker容器技术 一、认识Docker容器技术和镜像仓库 容器 容器是一种轻量级、可移植、自包含的软件运行环境,允许多个应用程序在同一个操作系统实例上独立运行,而不会互相干扰。想必大家有点不好理解,那么 利用通俗易懂的方式概述容器: 想象一下,你有一个应用程序,但是这…

Windows程序设计9:文件的读写操作

文章目录 前言一、文件的写操作WriteFile1.WriteFile介绍2.WriteFile实例二、文件的读操作ReadFile1.ReadFile简介2.ReadFile实例总结前言 Windows程序设计9:文件的读写操作。 一、文件的写操作WriteFile 1.WriteFile介绍 从文件指针指向的位置开始,将数据写入到一个文件中…

AJAX笔记入门篇

黑马程序员视频地址&#xff1a; 黑马程序员前端AJAX入门到实战全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2https://www.bilibili.com/video/BV1MN411y7pw?vd_source…

洛谷 P10288 [GESP样题 八级] 区间 C++ 完整题解(STL二分法)

本文并非最优解&#xff0c;但能通过。 一、题目链接 P10288 [GESP样题 八级] 区间 - 洛谷 二、解题思路 **本题的大意就是求出a[l~r]间x出现的次数&#xff0c;由于数据较大、较多&#xff0c;所以暴力容易超时。** 首先新建一个mp&#xff0c;mp[x]是一个vector&#xff0c;里…

springboot集成钉钉,发送钉钉日报

目录 1.说明 2.示例 3.总结 1.说明 学习地图 - 钉钉开放平台 在钉钉开放文档中可以查看有关日志相关的api&#xff0c;主要用到以下几个api&#xff1a; ①获取模板详情 ②获取用户发送日志的概要信息 ③获取日志接收人员列表 ④创建日志 发送日志时需要根据模板规定日志…