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

MySQL 中的索引数量是否越多越好?

不是越多越好,我们要根据实际需要来增加索引。InnoDB 中每创建一个索引,就会多维护一个B+树结构。索引的目的是为我们带来查询效率上的提高。如果不是频繁使用的查询字段,没有必要创建索引。

增加索引带来的问题
  1. 需要的磁盘存储空间增大,增加了一个B+树结构
  2. 影响缓冲池的命中率,对表进行操作的时候,索引数据也会加载到内存中,索引数据占用了内存,表数据就会相应的变少了,缓冲池的命中率降低
  3. 增删改的效率会降低,在索引存在时,每个涉及索引的操作都需要对索引数据进行维护
  4. 索引的命中会带来不确定性,可能会命中了一个不是最优的索引

如果不能带来查询效率上的提高,创建索引就没有必要

创建索引的依据
  1. 需要作为查询条件频繁查询的字段,经常在 order by 、group by 、 distinct 后面的字段也可以建立索引
  2. 字段的值增加索引后可以大规模的加快查询效率,要使用高选择性的字段作为索引。类似性别字段,没必要创建索引
  3. 减少回表,如果经常性使用查询条件 field1=value1 去查询 field2,可以使用 field1,field2 创建联合索引
  4. 复合索引,多个字段一起查询,可以创建复合索引,提升查询效率

http://www.kler.cn/a/558362.html

相关文章:

  • 抽象类、接口、枚举
  • kafka+spring cloud stream 发送接收消息
  • edge浏览器将书签栏顶部显示
  • 八大排序算法(1)插入排序-直接插入排序 和 希尔排序
  • 探索火山引擎 DeepSeek-R1 满血版:流畅、高效的 AI 开发体验
  • 当 OpenAI 不再 open,DeepSeek 如何掀起 AI 开源革命?
  • Java-如何将其他地方拉取的jar包导入本地maven环境
  • eBPF加速的边缘计算网络:构建5G时代的微秒级传输引擎
  • 【算法】初等数论
  • REACT--组件通信
  • yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
  • 自动化合约生成与管理:AI与Python的完美结合
  • SpringBoot Web入门程序
  • vector结构刨析与模拟实现
  • uniapp+uview模仿企业微信请假时间选择器
  • 千峰React:组件使用(1)
  • 学习经验分享【39】YOLOv12——2025 年 2 月 19 日发布的以注意力为核心的实时目标检测器
  • 多人协同创作gitea
  • King3399(ubuntu文件系统)串口功能测试
  • 通过Selenium实现UI自动化校验输入的数据是否完整有效方式