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

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

相关文章:

  • 超详细,多图文介绍redis集群方式并搭建redis伪集群
  • 《每天搞懂一道Hard》之数独终结者(LeetCode 37)
  • Ubantu22.04系统docker部署Open WebUI+Ollama【教程】
  • 施耐德 PLC 硬件库 DTM 的安装
  • 如何使用 Jenkins 实现 CI/CD 流水线:从零开始搭建自动化部署流程
  • 大数据与金融科技:革新金融行业的动力引擎
  • Linux(ftrace)__mcount的实现原理
  • 大白话html第六章HTML 与后端交互、优化网页性能
  • 使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法
  • ArcGIS Pro高级技巧:高效填充DEM数据空洞
  • Python import 机制与文件路径问题解析
  • vim:基础配置
  • vcredist_x64 资源文件分享
  • Mastercam出现提示“Mastercam提示没有许可证,你有激活码吗”的报错的解决方案
  • 计算机网络——详解TCP三握四挥
  • Linux软硬链接
  • SpringBoot 日志 与 门面模式(外观模式)
  • Anaconda安装(2024最新版)
  • Iceberg Catalog
  • AWS中使用CloudFront分发API Gateway
  • 波兰 政府网站建设/seo是干什么的
  • 中国b2c十大网站/seo教程seo官网优化详细方法
  • 西宁网站建设君博正规/陕西整站关键词自然排名优化
  • 如何查询网站icp备案/外贸网站建设推广公司
  • 长沙响应式网站建设/搜索引擎排名google
  • 平乡县网站建设/广告公司排名