【数据库】MySql的索引详解
创作时间:
作者:
@小白创作中心
【数据库】MySql的索引详解
引用
1
来源
1.
https://www.cnblogs.com/cmxb/p/18763145
索引是数据库中用于快速查询和检索数据的重要数据结构,类似于书的目录。在数据库中合理使用索引可以大大提高数据检索速度,但过多的索引也会带来存储和维护成本。本文将详细介绍MySQL中各种类型的索引及其使用场景。
简介
索引是一种用于快速查询和检索数据的数据结构,类似于书的目录。在几百页的书通过几页目录就可以精确定位到我们想看的章节。
优点和缺点
优点
正确的使用索引可以大大提高检索速度
可以使用唯一索引保证数据在库中的唯一性
使用聚合索引减少回表,降低IO次数
缺点
索引不宜创建的太多,否则增删改时不仅修改数据,还要修改大量的索引数据
索引也会占用磁盘空间
索引结构
- B树:多路平衡查找树,B树的所有节点都会存储key(索引)和data(行记录)
- B+树:B树的变体,B+树只有叶子节点key(索引)和data(行记录),其他节点都只存放key。B+树的叶子节点会存放相邻叶子节点指针,B树没有这个特性。
- Hash:键值对的集合,通过key可以快速的查询到对应的value,
- 黑红树
Mysql中,Innodb和MyISAM存储引擎都是用B+树
- MyISAM中B+树叶子结点存放的是行记录的地址,如果要取到数据需要再进行一次IO,这样设计是因为 MyISAM中,数据和索引是两个文件
- Innodb中B+树叶子节点存放的是行记录,Innodb中,数据和索引是一个文件。
索引分类
- 主键索引:一张表只能有一个,主键不能为null,不能重复,如果没有显示指定,Innodb会自动检查是否有唯一且不能为null的字段,如果有选择该字段为默认主键,否则自动生成一个当做自增主键
- 普通索引:没有特殊要求,允许数据重复且可以为null,只是加快了查询速度
- 唯一索引:和普通索引一样,唯一区别是不允许数据重复,值可以为null
- 联合索引:多个字段一起创建一个索引,该索引有最左匹配原则,
最左匹配原则:如果where条件中包含索引中最左边的字段,就可以使用该索引,否则即使包含除了最左字段意外其他所有字段,都不会走索引查询
举例:组合索引 name age dep
- select name from table where name='A' 可以走索引
- select name from table where age=15 and dep='A' 不会走索引
聚集索引
索引结构和数据存放在一起
- 优点
- 查询块,因为数据和索引在一个文件中,减少了一次IO
- 因为叶子节点是按照根据所以大小有序排列的,所以排序和范围查找很快
- 缺点
- 插入时,可能会导致数据跨页,造成大量IO操作
非聚集索引
索引和数据分开放
- 优点:非聚集索引叶子不存储数据,更新起来相对较快
- 缺点:因为叶子节点存储的数据地址,所以查找记录会多一次IO操作
结构图
以表table为例
id name age
1 A 1
2 B 2
3 C 3
4 A 4
聚集索引结构图
非聚集索引结构图
索引下推
mysql提供的索引优化功能,允许存储引擎在进行索引遍历时,根据where条件过滤掉不匹配的数据,从而减少IO次数,以期提高查询效率。
创建索引的建议
可以用来创建索引的字段
- 字段值不能为null
- 频繁查询的字段
- 频繁排序的字段
索引的个数
- 单表索引个数建议不超过5个,索引太多的话增删改也会有很大压力
索引失效场景
- 有组合索引,但是未遵循最左匹配原则
- 在索引字段上进行计算、函数、类型转化
- 模糊匹配时使用 %value,使用 value%,是可以走部分索引的
- 查询中使用 OR,但是没有使用索引列,会导致索引失效
- 隐式转换
热门推荐
双签贷款合同:探究其中的法律风险与责任分配
一顿饭被多收50元?餐厅的这些隐形收费,你其实可以拒付!
Galgame《初雪樱》:一场关于复仇与救赎的沉浸式体验
每天10分钟HIIT:比卷腹更高效的燃脂方案,懒人必备!
学习配音的第一步:实用技巧与建议
深度剖析演讲艺术:高效提升表达力和演讲魅力
大数据因果推断:数据驱动式学习下的因果混淆去偏算法
哪种发电方式的成本最低?降低发电成本的方法有哪些?
全球电池产能已达3TWh,未来5年还将增加两倍?
发烧的时候能不能喝姜汤水
如何挑选好吃的口蘑(从外观到气味,教你轻松辨别口蘑的好坏)
不是一味“控糖”就安全 老糖友注意:血糖低于3.9可致命!
国风品牌名字的魅力-国风品牌取名思考与案例解析
2024年中文说唱十佳专辑榜单:多平台数据综合评选
持续低烧怎么处理
借MBTI聊聊认知及其边界
5年期存款利率低于1年期?专家解析存款利率"倒挂"现象
F1:红牛不行了?马尔科预言:迈凯伦内斗、维斯塔潘继续夺冠
红剑鱼刚刚出生应以何为食?(红剑鱼饲养初期所需食物及喂养技巧)
服务器模组无法正常工作?七种常见原因及解决方案
孙颖莎人气离谱?体坛年度票选引热议,所有人票数相加不及她一半
成为沟通和人际交往“高手”必读的书籍推荐
高速公路行车安全知识:牢记“九字警句”,预防高速二次事故
偏头痛急性期治疗指南(第一版)发布:科学应对,缓解痛苦
汽车碰撞测试网使用指南:国内外权威网站查询方法
西双版纳十大特产榜单,让您满载而归的旅行秘籍!
IRR内部收益率
历届诺贝尔经济学奖得主及其贡献
日本大奖赛:维斯塔潘轻松获胜,迈凯伦分获第二三名
美国80年代经济增速及通胀变动