news 2026/4/16 19:31:59

MySQL 索引原理与优化实战指南:从失效场景到联合索引设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 索引原理与优化实战指南:从失效场景到联合索引设计

文章目录

      • 一、MySQL中索引一定有效吗?如何排查索引的效果?
      • 二、索引失效的场景
      • 三、什么是索引下推?
      • 四、建索引时的注意事项
      • 五、联合索引的设计原则
      • 六、联合索引和多个单例索引的区别

一、MySQL中索引一定有效吗?如何排查索引的效果?

  1. 不一定有效,不一定会用到索引,使用索引不一定不全表查询快
  2. MySQL最终是否走索引,靠的是优化器的最终计算,优化器会计算走索引和全表扫描各自的IO成本和CPU成本,哪个成本低就选哪个。
  3. 排查索引用explain+查询语句 ,重点看下面的几个字段type、row、key、extra.
    • type:ALL表示全表扫描、index表示全索引扫描、range表示范围扫描、ref表示等值扫描
    • rows: 预估扫描行数,行数越大说明成本越高
    • key: 实际使用的索引名,null表示没有用到索引(全表扫描)
    • extra:using index表示使用联合索引,不用回表、using index condition表示经过了回表

二、索引失效的场景

索引失效是面试高频考点,场景不少,但背后的原因基本就两类:一是查询条件导致索引树的快速查找能力用不上,二是优化器算了一笔账觉得不划算。

  1. 违反最左匹配原则
  2. 索引列上做了运算
  3. 索引列上使用了函数
  4. like左侧带%号的模糊查询
  5. 用or关键字关联非索引字段
    -where name = 'lyq' or age = 20, 如果age没有索引,MySQL没有办法通过索引快速过滤age条件,整个查询可能退化成全表查询。
  6. 隐式的类型转换
    - name是varcher类型,查询写成了where name = 1
  7. 优化器认为全表扫描更划算
    - 同一个索引,热点数据可能会走全表扫描,而冷门数据会走索引,因为,热点数据多,走索引会产生大量的回表操作,不如全表扫描
  8. group by后的字段没有索引

三、什么是索引下推?

索引下推是MySQL5.6引入的优化技术,目的是减少回表次数,提升查询效率。
核心思路是把部分条件过滤下推到引擎层,在引擎层就把不符合的数据过滤掉,不用再回表查询所有数据。

  • 以前的流程是:引擎层通过索引定位数据,返回主键给Server层,Server层回表拿去所有数据,再通过剩下的条件过滤数据。
  • 有了索引下推,引擎层就能直接通过索引里的列过滤不符合的数据,不符合的数据就不需要回表操作。
  • 索引下推主要用在联合索引中

四、建索引时的注意事项

索引不是越多越好,每个索引都占磁盘空间,每次写入都要维护索引的B+树,索引越多插入效率越低。

  1. 区分度太低的字段不要建立索引,比如说性别,就两个值,建了索引也没什么过滤效果,不过也有例外,比如说定时任务表,大部分都是成功,只有少量失败,通过失败状态查询能过滤掉大量的数据,这时候的建索引就是有意义的。
  2. 大字段不要建立索引。
  3. 写多读少的字段不要建立索引。
  4. 频繁查询的字段要建立索引
  5. distinctgroup byorder by后面的字段要建立索引。

五、联合索引的设计原则

  1. 区分度高的放前面
  2. 查询效率高的放前面
  3. 范围查询的放后面
  4. 利用覆盖查询

六、联合索引和多个单例索引的区别

联合索引是一颗B+树,多个单例索引是多个B+树,查询时,单例索引通常只能走一个索引,而联合索引能同时利用多个列过滤。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:43:42

高效语音处理新选择|基于科哥构建的SenseVoice Small镜像应用

高效语音处理新选择|基于科哥构建的SenseVoice Small镜像应用 1. 引言:语音识别与情感分析的融合趋势 随着人工智能技术在语音领域的持续演进,传统的语音识别(ASR)已从单纯的“语音转文字”逐步向多模态语义理解发展…

作者头像 李华
网站建设 2026/4/16 12:58:38

零基础入门:用Meta-Llama-3-8B-Instruct快速实现会议纪要自动化

零基础入门:用Meta-Llama-3-8B-Instruct快速实现会议纪要自动化 1. 引言:为什么需要自动化的会议纪要工具? 在现代企业协作中,会议是信息同步、决策推进和跨部门协调的核心场景。然而,会后整理会议纪要往往耗时且重复…

作者头像 李华
网站建设 2026/4/15 23:23:08

人脸检测模型选型指南:为什么DamoFD-0.5G是轻量级最佳选择

人脸检测模型选型指南:为什么DamoFD-0.5G是轻量级最佳选择 你是不是也遇到过这样的情况:公司要做一个带人脸识别功能的门禁系统,或者开发一款美颜App的人脸追踪模块,结果一上手就卡在“用哪个模型”这个问题上?精度高…

作者头像 李华
网站建设 2026/4/16 12:58:25

Qwen快速体验指南:5分钟免配置,1块钱玩转大模型

Qwen快速体验指南:5分钟免配置,1块钱玩转大模型 你是不是也遇到过这样的场景?创业团队要给投资人做一场智能客服的Demo展示,时间紧、任务重,可团队里全是前端开发,没人会搭CUDA环境,也不懂Linu…

作者头像 李华
网站建设 2026/4/16 13:03:38

FilePizza终极指南:浏览器直连文件传输的完整方案

FilePizza终极指南:浏览器直连文件传输的完整方案 【免费下载链接】filepizza :pizza: Peer-to-peer file transfers in your browser 项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza 还在为传统文件传输的繁琐流程而困扰吗?每次都…

作者头像 李华
网站建设 2026/4/16 12:05:21

Hunyuan部署为何慢?top_p和temperature参数调优指南

Hunyuan部署为何慢?top_p和temperature参数调优指南 1. 引言:Hunyuan翻译模型的性能挑战与优化需求 在实际应用中,Tencent-Hunyuan/HY-MT1.5-1.8B 作为一款高性能机器翻译模型,尽管具备出色的BLEU分数和多语言支持能力&#xff…

作者头像 李华