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

【MySQL数据库】索引 - 结构 学习记录

MySQL - 索引 - 结构

  • 引言
  • 结构

引言

什么是索引
索引(Index)就是 帮助数据库快速找到数据的数据结构(有序)

(可以看出,索引是一种数据结构)

可以把它类比成 书的目录:

  • 你想在一本 500 页的书里找到“二叉树”这一章
  • 没有目录 → 只能一页一页翻(全表扫描)
  • 有目录 → 直接跳到 201 页(索引定位),效率高很多
    在数据库里,道理一样:
  • 没有索引:需要把整张表一行一行读出来,直到找到目标数据
  • 有索引:可以直接通过索引快速定位到目标数据

假如有这样一个表
[图片]

现在执行语句

select * from user where age = 45

如果没有索引,MySQL 查数据只能 全表扫描,一行一行去比对
如果有索引,这里假设使用 二叉搜索树 作为索引,那么这张表就会变成(只是以二叉搜索树为例)
36
/  19    48
\     / 33 45 53
/
23
/
20

只需要比对三次就找到了45

由此可以发现,有 索引 的情况,搜索效率是非常高的

事物都具有两面性,索引 既有优点也有缺点

优点:

  1. 提高搜索效率,降低数据库 IO成本
  2. 提高排序效率
    缺点:
  3. 占用空间
  4. 降低更新表的速度

结构

在上一篇 存储引擎 中提到过,索引 是在 存储引擎层 实现的

也就是说,存储引擎 不同,索引的结构也不同,主要包含以下几种

索引结构描述
B+树索引最常见的索引类型,大部分引擎都支持 B+ 树索引
Hash索引基于哈希表,只有精确匹配索引列的查询才有效,不支持范围查询
R树(空间索引)空间索引是 MyISAM 引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少
Full-text(全文索引)采用倒排索引,把文档中的关键词分词后建立索引(用于模糊搜索、关键词搜索,不适合做结构化数据的查找)

对比这几种 索引 在存储引擎中的支持情况

索引InnoDBMyISAMMemory
B+树索引支持支持支持
Hash索引不支持不支持支持
R树索引不支持支持不支持
Full-text5.6版本后支持支持不支持

为什么不用其他的数据结构
二叉树:
在学习二叉树的时候我们都知道,如果一组数据是按序给出的,那么形成的二叉树的结构就会是一个链表,查询性能大大降低
此外,二叉树一个根结点只有两个子结点,如果数据量很大,那么二叉树的层级就会较深,搜索效率降低
B 树:
和二叉搜索树一样,如果数据量很大,层级会较深,进而搜索效率降低

http://www.dtcms.com/a/359079.html

相关文章:

  • Linux之Shell编程(三)流程控制
  • 知网文献高级检索方法
  • 防护墙技术(一):NAT
  • 如何调整Linux系统下单个文件的最大大小?
  • 2025年09月计算机二级Java选择题每日一练——第十二期
  • 介绍分布式事务之Seata
  • NV032NV037美光固态闪存NV043NV045
  • C++世界的大门——基础知识总结
  • 银河麒麟系统无法打开360浏览器的解决办法以及安装initramfs-tools报错解决方案
  • “HEU-AUTO”无线上网使用指南
  • 【开题答辩全过程】以 基于springboot的户外越野活动管理系统为例,包含答辩的问题和答案
  • 【CUDA进阶】MMA分析Bank Conflict与Swizzle(上)
  • Python 数据分析:计算,分组统计2,df.groupby()和grouped.agg()。听故事学知识点怎么这么容易?
  • 大模型推理显卡对比:Tesla P40 vs Titan RTX vs RTX A3000
  • GaussDB生产扩容引起的PANIC问题处理案例
  • 重叠IO模型
  • MySQL基础理解入门
  • 微服务架构中的 “双保险“:服务保护与分布式事务解决方案实战
  • 执行一条Select语句流程
  • Linux从入门到进阶--第四章--Linux使用操作
  • 深度学习核心损失函数详解:交叉熵、MSE、对比学习(InfoNCE)
  • Linux中的Shell编程 第一章
  • TechPowerUp GPU-Z中文版:专业显卡检测工具
  • 分分合合,门模块方案又兴起了
  • 架构进阶——解读 69页 方法轮IT规划培训 架构-重点-细节【附全文阅读】
  • FFmpeg音视频处理解决方案
  • 互联网大厂面试:大模型应用开发岗位核心技术点解析
  • CSS基础学习第二天
  • 算法之x数之和
  • nginx配置websock请求,wss