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

MySQL学习笔记(1)索引

本文参考:https://javaguide.cn/database/mysql/mysql-index.html

索引的数据结构类型

B+树

InnoDB 引擎使用B+树作为BTree索引的数据结构。介绍B+树就要先从B树介绍起,B树全称为 多路平衡查找树,区别与自平衡二叉查找树,B树的每个节点都可以有多个关键字,而且叶子结点的高度一致。

在这里插入图片描述

查找N的过程:

在这里插入图片描述
在B树中,每个节点不仅保存了关键字(key),也记录着对应的数据值(data)。而B+树就有所区别了,B+树的数据域(data)只保存在叶子节点中,这使得B+树的查找次数是非常稳定的。并且,B+树的叶子节点之间使用链表进行链接,这使得在范围查找时十分遍历。
在这里插入图片描述
在查找区间 [B,H] 时只要顺着叶子结点间的链表进行顺序遍历便可。

聚簇索引与非聚簇索引

聚簇索引(聚集索引):索引结构和数据一起存放的索引,InnoDB 中的主键索引就属于聚簇索引。

在这里插入图片描述

在根据主键查找到对应的叶子节点时(B+树),叶子节点中的data即为要返回的数据.

非聚簇索引(非聚集索引):索引结构和数据分开存放的索引,二级索引(辅助索引)就属于非聚簇索引。MySQL 的 MyISAM 引擎,不管主键还是非主键,使用的都是非聚簇索引。

在这里插入图片描述
查找至叶子节点时,返回的是主键的值而非对应的数据,此时需要根据返回的主键在主键索引中进行二次查找,之后返回对应的数据。 (回表)

索引的类型

  • 主键索引:加速查询 + 列值唯一(不可以有 NULL)+ 表中只有一个。
  • 普通索引:仅加速查询。唯一索引:加速查询 + 列值唯一(可以有 NULL)。
  • 覆盖索引:一个索引包含(或者说覆盖)所有需要查询的字段的值。
  • 联合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。
  • 全文索引:对文本的内容进行分词,进行搜索。目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。一般不会使用,效率较低,通常使用搜索引擎如 ElasticSearch 代替。
  • 前缀索引:对文本的前几个字符创建索引,相比普通索引建立的数据更小,因为只取前几个字符。

主键索引(Primary Key)

根据key值可以在查询至叶子节点时直接返回对应的数据。
在这里插入图片描述

二级索引(辅助索引)

二级索引(Secondary Index)的叶子节点存储的数据是主键的值,也就是说,通过二级索引可以定位主键的位置,二级索引又称为辅助索引/非主键索引。
在这里插入图片描述


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

相关文章:

  • 玩转 Netty : 如何设计高性能RPC通信组件
  • MTK 相机多帧拍照systrace 拆解笔记
  • 组件动态注册、布局引擎、Schema驱动渲染的可视化搭建系统架构设计之参考方案
  • 2.7 大模型RAG内容安全合规检查-大模型ACP模拟题-真题
  • 山大软院ai导论实验之采用BP神经网络分类MNIST数据集
  • 指纹细节提取(Matlab实现)
  • 智能制造:汽车从订单到交付全流程
  • TCP如何保证可靠性
  • 《Effective Objective-C》阅读笔记(下)
  • seacmsv9管理员账号/密码注入
  • 【MySQL】第十一弹---复合查询全攻略:多表、自连接、子查询与合并查询
  • Idea java项目结构介绍
  • 服务器IPMI用户名、密码批量检查
  • 2-PostgreSQL docker compose 安装教程-Pgvector
  • 【软考-架构】1.1、计算机硬件-CPU校验码
  • Redis 五大核心数据结构详解
  • SSL域名证书怎么续期?
  • 最新版本SpringAI接入DeepSeek大模型,并集成Mybatis
  • 6-1 定时中断
  • 手写线程池