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

Mysql索引

MySQL中的索引是一种用于加速数据检索的高效数据结构,类似于书籍的目录。它通过优化数据存储和查询路径,显著减少全表扫描的开销。

1.索引的核心作用

加速查询:避免全表扫描,直接通过索引定位数据位置(如B+树结构减少磁盘IO次数)。

保证唯一性:唯一索引(UNIQUE)和主键索引(PRIMARY KEY)确保列值唯一

优化排序和分组:索引已按规则排序,可加速 ORDER BY、GROUP BY 操作

2.索引的数据结构

B+树(主流结构):多层级平衡树,叶子节点存储数据指针并形成有序链表,适合范围查询。

B+树和B树的对比:

对于B树来说,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量的数据,只能增加树的高度,导致性能降低

在这里插入图片描述

哈希索引:基于哈希表,仅支持精确匹配(如 =、IN),适用于等值查询

在这里插入图片描述

全文索引:大文本字段的模糊搜索(如 LIKE ‘%keyword%’),支持分词检索

3. 索引分类

在这里插入图片描述

聚集索引选取规则:

  • 如果存在主键,主键索引就是聚集索引。
  • 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引
  • 若以上都没有,则InnoDB会自动生成一个rowid作为隐藏的聚集索引

在这里插入图片描述

案例

在这里插入图片描述

4. 索引的优缺点
优点缺点
查询速度提升(尤其大表)占用额外存储空间
加速排序、分组、连接操作增删改操作变慢(需动态维护索引) 6 13
唯一性约束保障过多或不合理索引可能降低性能 4 10

数据库的事务

什么是事务? 多条sql语句,要么全部成功,要么全部失败

事务的特性:原子性,一致性,隔离性,持久性

  • 原子性:组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作都成
    功, 整个事务才会提交。任何一个操作失败,已经执行的任何操作都必须撤销,让数据库返回初始状态。
  • 一致性:事务操作成功后,数据库所处的状态和它的业务规则是一致的。即数据不会被破坏。如 A 转账 100 元给 B,不管操作是否成功,A 和 B 的账户总额是不变的。
  • 隔离性:在并发数据操作时,不同的事务拥有各自的数据空间,它们的操作不会对彼此产
    生干 扰
  • 持久性:一旦事务提交成功,事务中的所有操作都必须持久化到数据库中
http://www.xdnf.cn/news/2762.html

相关文章:

  • LeetCode【剑指offer】系列(动态规划篇)
  • VBA快速创建Excel中数据模型的数据连接
  • C++ 部署的性能优化方法
  • 网络拓扑模型相关题目-1
  • Lustre/Scade 语言时序算子与形式化验证的联系
  • 从暴力到优化:解决「分数严格小于k的子数组数目」问题
  • 硬件加密+本地部署,大模型一体机如何打造AI安全护城河?
  • terraform plan和apply的区别
  • 声纹监测技术在新能源汽车的应用场景解析
  • Volcano 进阶实战 (三) - (多集群 / 离线混部)调度
  • windows程序转鲲鹏服务器踩坑记【持续更新中】
  • 如何在WordPress网站中设置双重验证,提升安全性
  • Leetcode594.最长和谐子序列
  • 小米云服务安卓版数据同步稳定性与安全性能测评
  • 安卓基础(接口interface)
  • 模板--进阶
  • 提高营销活动ROI:大数据驱动的精准决策
  • 使用 Electron 打包 Windows 可执行程序
  • Darvas Box黄金交易算法详解:基于XAU/USD的实战应用
  • 武装Burp Suite工具:APIKit插件_接口安全扫描.
  • 算法备案材料拟公示内容涉及什么?如何撰写?
  • opendds的配置
  • IDEA2022.3开启热部署
  • 第16节:传统分类模型-支持向量机(SVM)在图像分类中的应用
  • sources.list.d目录
  • C++(初阶)(十三)——继承
  • 【学习笔记】机器学习(Machine Learning) | 第四章(3)| 多变量线性回归
  • new的使用
  • [4282]PHP跨境电商源码-多语言商城源码/支持代理+商家入驻+分销+等等众多功能/带详细安装
  • Object.assign 浅拷贝