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

mysql知识总结 索引篇

mysql知识总结 索引篇

    • 1. 索引问题常见分类
      • 1. 什么是索引
      • 2. 索引的分类
      • 3. 从数据结构分类
      • 4. 通过二级索引查询商品数据的过程
      • 5. 为什么选择B+树作为索引呢?

本文是阅读 小林coding 后的读书笔记

原文可以点击上面超链接到达

也可以直接百度搜索 小林coding

1. 索引问题常见分类

在这里插入图片描述

1. 什么是索引

索引就是目录

比如说我们想要查询一本书的某内容 最呆的方法就是一页一页的取翻嘛

但是这样子的效率就很低 所以说我们发明了目录 索引也是同样的道理

什么是存储引擎

所谓存储引擎 说白了就是如何存储数据 如何建立索引 如何更新 删除 查找数据的实现方法

在这里插入图片描述

2. 索引的分类

索引可以分为哪些类 分别是什么

索引可以分为

  1. 按数据结构分类

有B+数索引 哈希索引 full-text索引

  1. 按物理存储分类

聚簇索引和二级索引(辅助索引)

  1. 按照字段特性分类

主键索引 唯一索引 普通索引 前缀索引

  1. 按照字段个数分类

单例索引 联合索引

3. 从数据结构分类

从数据结构分类有 B+树索引 hash索引 full-text索引

其中innodb引擎支持B+树索引和 full-text索引

当我们创建表的时候 innodb会根据不同的场景选择不同的列作为索引

  1. 如果有主键 默认使用主键作为为聚簇索引的索引键
  2. 如果没有主键 选择第一个不包含null值的唯一列作为索引键
  3. 如果都没有 innodb将生成一个隐藏的自增id列作为聚簇索引的索引键

其他索引又被称为二级索引和非聚簇索引 默认的数据结构也是B+ tree

我们用下面的例子来理解B+树
在这里插入图片描述

B+树是一颗多叉树 叶子节点才存放数据 非叶子节点存放索引 节点的数据是按照索引顺序存放的

每一层父节点的索引值都会出现在子节点的索引值中 因此在子节点中 包含了所有的索引值信息

并且每一个节点都有两个指针 分别指向上一个和下一个叶子节点

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c23ac53dad764877a352a24a5fb9421f.pn

假如说我们执行下面的语句

select * from product where id = 5

这条sql语句使用主键索引来查询id为5的商品

查询过程中 B+树会自上而下的查找

  1. 将5节点和1 10 20比较 发现节点1~10之间
  2. 将5节点和4 7比较 发现节点在4~7之间
  3. 在子节点中寻找 发现5这条数据

我们发现 这里经过了三次IO

B+树存储千万级别的数据只需要3~4层的高度就可以满足 这意味着查询千万级别的表只需要3到4次IO

B+树相对B树来说 更矮更胖 所以说IO次数更小

一般来说1000万左右的数据是三层 1000万之后是四层 四层之后性能就会开始显著下降

这里的原因主要有亮点

  1. 到1000万数据的时候分裂成四层 多了一层io
  2. buffer pool瓶颈

哈希索引

innodb 不支持手动创建哈希索引 但是它通过自适应哈希索引在内部优化特定场景

它会自动检测高频访问的索引页 为其创建哈希索引

full-text索引

加速文本内容(如文章、评论、商品描述等)搜索

4. 通过二级索引查询商品数据的过程

主键索引的B+tree和二级索引的B+tree区别如下

主键索引的叶子节点里存放的是真实的数据

二级索引的叶子节点里面存放的是主键值 而不是真实的存储数据

当我们使用二级索引查询的时候 首先会查询到它的主键值

之后再进行回表查询 到主键索引中查询到相关的数据

当我们能够查询到的数据可以在辅助索引中找到的时候 就不必进行回表查询了 这就叫做覆盖索引

5. 为什么选择B+树作为索引呢?

  1. 和B树对比

B树非叶子节点上也有数据 所以说它是一棵更高更瘦的树 而我们需要更矮更胖的树来减少IO次数

B+树的叶子节点之间使用双向链表进行链接 适合范围查找

  1. 和二叉树相比

这个和B树一样 太高太瘦了

  1. 和hash相比

虽然说在做等值查询的时候很快 时间复杂度为O(1)但是面对范围查询的时候效率就很差了

相关文章:

mysql知识总结 索引篇

mysql知识总结 索引篇 1. 索引问题常见分类1. 什么是索引2. 索引的分类3. 从数据结构分类4. 通过二级索引查询商品数据的过程5. 为什么选择B树作为索引呢? 本文是阅读 小林coding 后的读书笔记 原文可以点击上面超链接到达 也可以直接百度搜索 小林coding 1. 索引…...

Flink 数据清洗与字段标准化最佳实践

—— 构建可配置、可扩展的实时标准化清洗链路 本文是「Flink Kafka 构建实时数仓实战」专栏的第 4 篇,将围绕字段标准化这一核心问题,从业务痛点、技术架构、配置设计到完整代码工程,系统讲透标准化实践。 📌 一、为什么实时字段…...

.NET写的开源工业物联网网关(IoTGateway)

Ver V0.0 250425 主要针对《物联网智能网关开发与设计》课程,根据官方的文档重新组织了一下,并演示了一下在Windows的VS2022下快速地搭建出了学习基于.NET8的Linux IoTGateway的开发,提供给学生作为学习的扩展和外延。 Index IoTGateway …...

蓝桥杯 5. 交换瓶子

交换瓶子 原题目链接 题目描述 有 N 个瓶子,编号为 1 ~ N,放在架子上。 例如有 5 个瓶子,当前排列为: 2 1 3 5 4每次可以拿起 2 个瓶子,交换它们的位置。 要求通过若干次交换,使得瓶子的编号从小到大…...

freeswitch配置视频对接

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 随着4G/5G网络的完善,视频呼叫的需求慢慢变多,本文介绍使用fs对接视频线路的配置方案。 环境 CentOS 7.9 freeswitch 1.10.7 视频模块 目前主流视频编解码使用H264,需要编译安装…...

使用Tortoise-ORM和FastAPI构建评论系统

title: 使用Tortoise-ORM和FastAPI构建评论系统 date: 2025/04/25 21:37:36 updated: 2025/04/25 21:37:36 author: cmdragon excerpt: 在models.py中定义了Comment模型,包含id、content、created_at、updated_at字段,并与User和Article模型建立外键关系。schemas.py中定义了…...

【信息安全工程师备考笔记】第三章 密码学基本理论

笔记内容整理自 https://www.bilibili.com/video/BV1X8411175t (B站 崔老夫子老师),老师讲解的非常好,推荐大家看原视频。 第三章 密码学基本理论 3.1 密码学概况 密码编码学:明文 —— > 密文 密码分析学&#x…...

精益数据分析(22/126):解锁创业增长密码与长漏斗分析

精益数据分析(22/126):解锁创业增长密码与长漏斗分析 在创业与数据分析的探索旅程中,我们都在不断寻求新的知识和方法,以提升创业的成功率。我一直期望能和大家共同学习、共同进步,今天就让我们继续深入研…...

【深度强化学习 DRL 快速实践】近端策略优化 (PPO)

PPO(2017,OpenAI)核心改进点 Proximal Policy Optimization (PPO):一种基于信赖域优化的强化学习算法,旨在克服传统策略梯度方法在更新时不稳定的问题,采用简单易实现的目标函数来保证学习过程的稳定性 解决…...

14-DevOps-快速部署Kubernetes

在学习阶段,为了能快速部署Kubernetes,这里用一个快速安装工具:Kubeode,来完成Kubernetes的部署。 接下来部署一个单机,一主一从的Kubernetes。一主一从都部署在同一台服务器上。 在虚拟机新开一个服务器&#xff0c…...

Java 安全:如何防止 DDoS 攻击?

一、DDoS 攻击简介 DDoS(分布式拒绝服务)攻击是一种常见的网络攻击手段,攻击者通过控制大量的僵尸主机向目标服务器发送海量请求,致使服务器资源耗尽,无法正常响应合法用户请求。在 Java 应用开发中,了解 …...

html+servlet项目中的echart图表

介绍 ECharts 是一款由百度开源的,基于 JavaScript 的可视化图表库,它提供了丰富的图表类型和强大的交互功能,能将数据以直观、美观的图表形式展示出来,广泛应用于数据可视化、商业智能、数据分析等领域。 官网: Ap…...

抖音小程序开发常见问题与代码解决方案

抖音小程序开发常见问题与代码解决方案 一、API调用与组件使用问题 1. 分享卡片样式不生效 问题:通过onShareAppMessage分享的小程序卡片样式显示旧版模板。 代码示例: javascript Page({ onShareAppMessage() { return …...

Springboot 手搓 后端 滑块验证码生成

目录 一、效果演示 二、后端滑块验证码生成思路 三、原理解析 四、核心代码拿走 滑块验证码react前端实现,见我的这篇博客:前端 React 弹窗式 滑动验证码实现_react中使用阿里云滑块验证码2.0前端接入及相关视觉-CSDN博客 一、效果演示 生成的案例…...

QPS说明

QPS(Queries Per Second,每秒查询数)是用于衡量服务器或系统处理请求能力的一个关键性能指标。 它表示服务器在一秒钟内能够处理的查询或请求的数量。 QPS的详细说明: 1. 定义 QPS:每秒查询数,指服务器…...

(六)机器学习---聚类与K-means

到本篇文章,我们先对前几篇所学习的算法进行一个回顾: 而本篇文章我们将会介绍聚类以及K-means算法。 分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机…...

macOS 更新后找不到钥匙串访问工具的解决方案

macOS 更新后找不到钥匙串访问工具的解决方案 随着macOS的不断更新,一些系统工具的位置可能会发生变化,给用户带来不便。钥匙串访问(Keychain Access)是macOS中一个非常重要的工具,用于管理密码、证书等敏感信息。最近…...

Mac 「brew」快速安装MySQL

安装MySQL 在 macOS 上安装 MySQL 环境可以通过Homebrew快速实现,以下是步骤指南: 方法 1:使用 Homebrew 安装 MySQL 1. 安装 Homebrew 如果尚未安装 Homebrew,可以通过以下命令安装: /bin/bash -c "$(curl -…...

代码随想录算法训练营第五十八天 | 1.拓扑排序精讲 2.dijkstra(朴素版)精讲 卡码网117.网站构建 卡码网47.参加科学大会

1.拓扑排序精讲 题目链接:117. 软件构建 文章讲解:代码随想录 思路: 把有向无环图进行线性排序的算法都可以叫做拓扑排序。 实现拓扑排序的算法有两种:卡恩算法(BFS)和DFS,以下BFS的实现思…...

Flutter Dart中的函数参数 默函数的定义 可选参数 箭头函数 匿名函认参数 命名参类数 闭包等

//使用forEach 打印下面的List里面的数据List list ["西瓜", "苹果", "香蕉"];list.forEach((value) {print(value);});//箭头函数1list.forEach((value) > print(value)); //只能一句//箭头函数2list.forEach((value) >{print(value), /…...

京东平台关键字搜索接口开发指南:Python实现与代码详解

一、接口概述 京东关键字搜索接口允许开发者通过HTTP请求获取平台商品的关键字搜索结果,常用于商品比价、数据分析等场景。本文基于Python演示如何调用京东搜索接口,解析返回数据并实现基础功能。 二、技术实现步骤 接口地址分析‌ 京东未完全公开API…...

告别进度失控:用燃尽图补上甘特图的监控盲区

在职场中,项目经理最头疼的莫过于“计划赶不上变化”。明明用甘特图排好了时间表,任务却总像脱缰野马——要么进度滞后,要么资源分配失衡。甘特图虽能直观展示任务时间轴,但面对突发风险或团队效率波动时,它更像一张“…...

PHP框架在微服务迁移中能发挥什么作用?

微服务架构因其模块化、高可用性和弹性扩展能力,已成为现代分布式系统的核心设计模式。PHP作为一门长期服务于Web开发的脚本语言,其生态中的主流框架(如Laravel、Symfony)通过模块化设计、高效通信机制和丰富的工具链,…...

Linux驱动开发快速上手指南:从理论到实战

Linux驱动开发快速上手指南:从理论到实战 作为嵌入式Linux开发的核心技能之一,驱动开发对于硬件控制至关重要。面对众多章节和概念,初学者常感到无从下手。本文将为你梳理Linux驱动开发的关键路径,提供从理论到实战的完整指导&am…...

第1讲|R语言绘图体系总览(Base、ggplot2、ComplexHeatmap等)

目录 第1讲|R语言绘图体系总览 ✨ 引言:为什么R绘图如此重要? 🧩 1. Base绘图系统 🧩 2. ggplot2生态系统 🧩 3. ComplexHeatmap超级热图系统 🧩 4. 其他特色绘图库(快速了解) ✏️ 小结一句话 📅 预告下一讲 第1讲|R语言绘图体系总览 (Base、ggplot…...

Android FFmpeg 交叉编译全指南:NDK编译 + CMake 集成

开发环境搭建 下载最新版Android Studio,安装SDK和模拟器 在Android Studio中配置:Setting → Android SDK → SDK Tools → 勾选CMake 和 NDK → Apply,按照提示下载安装 SDK是Android应用开发的基础工具包,适合大多数上层逻辑…...

Spring AI 快速入门:从环境搭建到核心组件集成

Spring AI 快速入门:从环境搭建到核心组件集成 一、前言:Java开发者的AI开发捷径 对于Java生态的开发者来说,将人工智能技术融入企业级应用往往面临技术栈割裂、依赖管理复杂、多模型适配困难等挑战。Spring AI的出现彻底改变了这一局面——…...

研发内控新规下的合规之道:维拉工时助力企业穿越IPO审查雷区

📌 背景 | 全面注册制下,研发内控成“必修课” 在全面注册制背景下,证监会发布的《监管规则适用指引——发行类第9号:研发人员及研发投入》(简称“发行类9号”),对企业的研发费用归集、研发工时…...

PyTorch生成式人工智能实战(3)——分类任务详解

PyTorch生成式人工智能实战(3)——分类任务详解 0. 前言1. 使用 PyTorch 进行端到端的深度学习1.1 PyTorch 深度神经网络训练流程1.2 数据预处理 2. 二分类2.1 创建数据批次2.2 模型构建与训练2.3 模型测试 3. 多类别分类3.1 验证集和提前停止3.2 模型构…...

单机无穷大系统暂态稳定性仿真Matlab模型

1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他低版本可联系代为转换) 电力系统是一个复杂的动态系统,系统一旦出现稳定性问题,可…...

12个HPC教程汇总!从入门到实战,覆盖分子模拟/材料计算/生物信息分析等多个领域

在科学研究、工程仿真、人工智能和大数据分析等领域,高性能计算 (High Performance Computing, HPC) 正扮演着越来越重要的角色。它通过并行处理、大规模计算资源的整合,极大提升了计算效率,使原本耗时数日的任务能够在数小时内完成。 随着计…...

零基础快速搭建AI绘画网站!用Gradio玩转Stable Diffusion

借助Gradio,简单几行Python代码即可快速搭建一个专属的AI绘画网站,轻松部署Stable Diffusion文生图应用,gradio自带的组件已经相当美化了,前端基础也省了! 好像大神的Stable Diffusion WebUI项目也是用的Gradio搭建的&…...

SpringCloud搭建Eureka注册中心

1、Eureka 的简介 Eureka 是 Netflix 开源的 ‌服务注册与发现框架‌,后被 Spring Cloud 集成为核心组件,用于解决微服务架构中服务治理问题。其核心目标是通过动态管理服务实例信息,实现服务间的透明通信与负载均衡。Eureka 通过简洁的 Server-Client 模型,结合心跳、缓存…...

信息学奥赛一本通 1509:【例 1】Intervals | OpenJudge 百练 1201:Intervals

【题目链接】 ybt 1509:【例 1】Intervals OpenJudge 百练 1201:Intervals 【题目考点】 1. 贪心算法 树状数组 并查集 2. 差分约束算法 【解题思路】 解法1:贪心算法树状数组、并查集优化 该题属于区间选点问题,ybt 1324:…...

电子电子架构 --- 主机厂视角下ECU开发流程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...

⭐Unity_Demolition Media Hap (播放Hap格式视频 超16K大分辨率视频 流畅播放以及帧同步解决方案)

播放大分辨率视频以及实现局域网视频同步是许多开发者会遇到的需求,AVPro有一个 Ultra Edition版本,也能播放Hap格式视频,之外就是Demolition Media Hap插件啦,实测即使是 7208*3808 大分辨率的视频帧率还是能稳定在30帧,它能帮助我们轻松解决…...

【MySQL】MySQL索引与事务

目录 前言 1. 索引 (index) 1.1 概念 1.2 作用 1.3 使用场景 1.4 索引的相关操作 查看索引 创建索引 删除索引 2. 索引背后的数据结构 2.1 B树 2.2 B+树的特点 2.3 B+树的优势 3. 事务 3.1 为什么使用事务 3.2 事…...

Apache Spark 源码解析

Apache Spark 是一个开源的分布式计算系统,提供了高效的大规模数据处理能力。下面我将对 Spark 的核心源码结构进行解析。 核心架构 Spark 的主要代码模块包括: Core (核心模块) 包含 Spark 的基本功能,如任务调度、内存管理、错误恢复等 …...

MySQL的日志--Undo Log【学习笔记】

MySQL的日志--Undo Log 知识来源: 《MySQL是怎样运行的》--- 小孩子4919 为了保证事务的原子性,当事务中途遇到各种错误需要将数据回滚(rollback)到原来的样子。为此MySQL提出撤销日志(Undo Log,也称undo日…...

一洽 全力辅助商户平台在线咨询解决方案

在商业数字化转型加速的背景下,客户对高效服务的需求日益增强。商户平台需要通过优化在线咨询服务,提升客户沟通效率与服务质量。一套综合性的在线咨询解决方案,通过整合多维度功能与智能技术,能够有效满足商户与客户的双向需求&a…...

ctfshow-web-新春欢乐杯

这几天做了这个新春欢乐杯&#xff0c;对于我这个小萌新来说有难度&#xff0c;同时也是收获满满&#xff0c;以下是我解题流程和收获 热身 <?php/* # -*- coding: utf-8 -*- # Author: h1xa # Date: 2022-01-16 15:42:02 # Last Modified by: h1xa # Last Modified …...

信奥赛之c++基础(初识循环嵌套与ASCII密码本)

🎠 游乐园编程奇遇记——循环嵌套与ASCII密码本 🎡 第一章:摩天轮与旋转木马——循环嵌套 🎪 游乐场里的双重循环 for(int 排数=1; 排数<=3; 排数++){// 外层循环像摩天轮for(int 座位=1; 座位<=5; 座位++){// 内层循环像旋转木马cout << "🎪"…...

同一电脑下使用 python2 和 python3

我本地先安装的2&#xff0c;然后再安装3。在电脑的环境变量 - Path 内&#xff0c;发现3的路径没有被加上&#xff0c;所以在cmd内输入python调用的是python2目录下的python.exe文件。pip.exe则是在Python/Scripts目录下&#xff0c;也就是默认调用的pip也是2的。 解决方案&…...

第十二届蓝桥杯 2021 C/C++组 直线

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 核心思路&#xff1a; 两点确定一条直线&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 第一种方式代码详解&#xff1a; 第二种方式代码详解&#xff1a; 题目&#xff1a;…...

向量数据库实践:存储和检索向量数据

向量数据库是一种专门设计用于存储和检索向量嵌入的数据库系统&#xff0c;能够支持语义搜索、推荐系统、图像识别等 AI 应用场景。 下面将详细介绍向量数据库中向量数据的存储和检索原理及实际应用&#xff0c;希望对各位读者有所帮助。 一. 向量数据的存储与检索流程 在向量…...

Pandas 数据导出:如何将 DataFrame 追加到 Excel 的不同工作表

在数据分析和数据处理过程中&#xff0c;将数据导出到 Excel 文件是一个常见的需求。Pandas 提供了强大的功能来实现这一需求&#xff0c;尤其是将数据追加到同一个 Excel 文件的不同工作表&#xff08;Sheet&#xff09;中。本文将详细介绍如何使用 Pandas 实现这一功能&#…...

区块链驱动的供应链金融创新:模型构建与商业化路径研究

区块链驱动的供应链金融创新&#xff1a;模型构建与商业化路径研究 1. 研究背景与意义 1.1 背景介绍 全球供应链金融市场规模预计2025年将达到3.6万亿美元&#xff0c;但传统模式面临四大核心问题&#xff1a;信息孤岛导致信任成本高昂&#xff08;占交易成本15-20%&#xf…...

DAX Studio将PowerBI与EXCEL连接

DAX Studio将PowerBI与EXCEL连接 具体步骤如下&#xff1a; 第一步&#xff1a;先打开一个PowerBI的文件&#xff0c;在外部工具栏里打开DAXStudio&#xff0c;如图&#xff1a; 第二步&#xff1a;DAXStudio界面&#xff0c;点击Advanced选项卡-->Analyze in Excel&#…...

使用springboot+easyexcel实现导出excel并合并指定单元格

1&#xff1a;准备一个单元格合并策略类代码&#xff1a; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.handler.CellWriteHandler; import com.alibaba.excel.write.metadata.holder.Writ…...

conformer编码器

abstract 最近,基于Transformer和卷积神经网络(CNN)的模型在自动语音识别(ASR)中显示出有希望的结果,优于递归神经网络(RNN)。Transformer模型擅长捕捉基于内容的全局交互,而CNN则有效地利用了局部特征。在这项工作中,我们通过研究如何将联合收割机卷积神经网络和tr…...