当前位置: 首页 > 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.xdnf.cn/news/1399213.html

相关文章:

  • 加速智能经济发展:如何助力“人工智能+”战略在实时视频领域的落地
  • Swift 解法详解:LeetCode 367《有效的完全平方数》
  • Kafka入门
  • 开源 C++ QT Widget 开发(八)网络--Http文件下载
  • 《微服务架构从故障频发到自愈可控的实战突围方案》
  • CSDN博客语法(不常用但有用)
  • 谷歌 “Nano Banana“ 深度解析:AI 图像的未来是精准编辑,而非从零生成
  • ⚡ Linux find 命令参数详解
  • MySQL基础理解入门
  • 嵌入式硬件电路分析---AD采集电路
  • Spring Boot 自动配置原理深度解析:从启动流程到监听机制
  • 【Java EE进阶 --- SpringBoot】Spring Web MVC(Spring MVC)(二)
  • 设计模式之代理模式!
  • 深度学习基础:前馈网络、反向传播与梯度问题
  • 基于IEC61499开放自动化PLC数据储存方案
  • 在 WSL2-NVIDIA-Workbench 中安装Anaconda、CUDA 13.0、cuDNN 9.12 及 PyTorch(含完整环境验证)
  • 第 8 篇:量化交易之tradeUI和webserverUI 区别?
  • 系统分析师考试大纲新旧版本深度分析与备考策略
  • 捡捡java——2、基础07
  • 开发指南136-设置零值不显示
  • vue中的与,或,非
  • Ansible 核心运维场景落地:YUM 仓库、SSH 公钥、固定 IP 配置技巧
  • [Windows] 剪映国际版CapCut 6.7.0 视频编辑处理,免费使用素材和滤镜
  • 拼团小程序源码分享拼团余额提现小程序定制教程开发源码二开
  • LeetCode 136. 只出现一次的数字
  • [论文阅读] 人工智能 + 软件工程 | 从“法律条文”到“Gherkin脚本”:Claude与Llama谁更懂合规开发?
  • 普蓝自研AutoTrack-4X导航套件平台适配高校机器人实操应用
  • k8s(自写)
  • docker安装Prometheus和Grafana 监控界面
  • 为多种业态注入智能化发展新活力的智慧地产开源了