MySQL学习笔记(1)索引

news/2025/3/3 8:40:04/

本文参考: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.ppmy.cn/news/1576248.html

相关文章

SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置

要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…

游戏引擎学习第128天

开始 然而,我们仍然有一些工作要做,渲染部分并没有完全完成。虽然现在已经能够运行游戏,而且帧率已经可以接受,但仍然有一些东西需要进一步完善。正在使用调试构建编译版本,虽然调试版本的性能不如优化版本&#xff0…

从零开始开发纯血鸿蒙应用之语音朗读

从零开始开发纯血鸿蒙应用 〇、前言一、API 选型1、基本情况2、认识TextToSpeechEngine 二、功能集成实践1、改造右上角菜单2、实现语音播报功能2.1、语音引擎的获取和关闭2.2、设置待播报文本2.3、speak 目标文本2.4、设置语音回调 三、总结 〇、前言 中华汉字洋洋洒洒何其多…

final 关键字在不同上下文中的用法及其名称

1. final 变量 名称:final 变量(常量)。 作用:一旦赋值后,值不能被修改。 分类: final 实例变量:必须在声明时或构造函数中初始化。 final 静态变量:必须在声明时或静态代码块中初…

Hive-05之查询 分组、排序、case when、 什么情况下Hive可以避免进行MapReduce

一、目标 掌握hive中select查询语句中的基本语法掌握hive中select查询语句的分组掌握hive中select查询语句中的join掌握hive中select查询语句中的排序 二、要点 1. 基本查询 注意 SQL 语言大小写不敏感SQL 可以写在一行或者多行关键字不能被缩写也不能分行各子句一般要分行…

【再谈设计模式】备忘录模式~对象状态的守护者

一、引言 在软件开发过程中,我们常常会遇到需要保存对象状态以便在之后恢复的情况。例如,在文本编辑器中,我们可能想要撤销之前的操作;在游戏中,玩家可能希望恢复到之前的某个游戏状态。备忘录模式(Memento…

NIM平台开发基于提示工程的大语言模型(LLM)应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1 课程介绍1.1 Goals1.2 content 2 提示词简介2.1 NVIDIA NIMs 用于提示工程2.2 OpenAI API 交互2.3 与 LangChain 交互实现聊天2.4 流式处理和批处理2.5 迭代式提示…

《白帽子讲 Web 安全:点击劫持》

目录 摘要: 一、点击劫持概述 二、点击劫持的实现示例:诱导用户收藏指定淘宝商品 案例 构建恶意页面: 设置绝对定位和z - index: 控制透明度: 三、其他相关攻击技术 3.1图片覆盖攻击与 XSIO 3.2拖拽劫持与数据…