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

MySQL 索引使用规范:常见失效场景与优化实操方案

一、前言
索引是提升 MySQL 查询速度最直接的手段,但日常开发中很多索引会出现失效问题,即使建立索引,SQL 语句依旧走全表扫描,大表场景下查询耗时成倍增加。
本文整理工作中高频遇到的索引失效场景,附带可复现 SQL 案例与优化写法,规范索引使用习惯,适用于业务表 SQL 优化、慢查询治理场景。

二、索引失效典型场景与优化

  1. 查询条件字段参与运算、函数调用
    失效案例:
    sql
    – create_time字段存在索引,使用函数后索引失效
    select * from user_info where DATE(create_time) = ‘2026-07-01’;
    失效原因:数据库无法使用索引检索函数计算后的结果,会全表遍历。
    优化写法:调整条件,让索引字段独立,不参与计算
    sql
    select * from user_info
    where create_time >= ‘2026-07-01 00:00:00’
    and create_time < ‘2026-07-02 00:00:00’;

  2. 字符串字段查询不加引号,隐式类型转换
    user_phone 为 varchar 类型且建有索引:
    sql
    – 错误写法,数字匹配字符串触发隐式转换,索引失效
    select * from user_info where user_phone = 13800138000;
    – 正确写法,字符串匹配
    select * from user_info where user_phone = ‘13800138000’;

  3. 模糊查询前置百分号 % xx
    sql
    – 前置%无法走索引
    select * from user_info where user_name like ‘%张三’;
    – 后置%可以正常使用索引
    select * from user_info where user_name like ‘张三%’;
    业务需要全模糊匹配时,可考虑全文索引、搜索引擎辅助处理。

  4. 联合索引不遵循最左匹配原则
    建立联合索引 idx_name_age (user_name, age)
    sql
    – 缺少最左字段user_name,索引失效
    select * from user_info where age = 20;
    – 遵循最左前缀,正常走索引
    select * from user_info where user_name = ‘小明’ and age = 20;

  5. 使用!=、not in、is not null 等否定条件
    这类逻辑会大幅降低索引利用率,数据分布分散时直接放弃索引扫描全表。
    优化思路:拆分查询逻辑,改用 in、等值匹配分页查询。

三、索引设计通用规范
区分度低的字段不建索引(如性别、状态只有 0/1 两种值,索引收益极低);
单表索引数量控制在 5 个以内,过多索引会降低新增、更新语句执行速度;
联合索引将高频查询、区分度高的字段放在最左侧;
超长字符串不直接建索引,可截取前缀建立前缀索引;
主键默认自带聚簇索引,避免重复创建主键相关索引。

四、验证索引是否生效的方法
使用 explain 关键字解析 SQL 执行计划,重点观察 type 字段:
type 为 all:全表扫描,未使用索引,需要优化;
type 为 ref/range:正常命中索引,查询效率良好;
key 字段显示实际使用的索引名称,无值代表索引失效。
示例:
sql
explain select * from user_info where user_name = ‘小明’;

五、总结
索引优化是数据库性能调优的基础环节,大部分慢查询根源都是索引使用不当。编码阶段规范 SQL 写法、合理设计索引结构,能大幅减少线上慢 SQL 问题,降低数据库服务器压力。
日常迭代上线前,建议对复杂查询 SQL 执行 explain 校验,提前规避索引失效问题。

http://www.jsqmd.com/news/1216141/

相关文章:

  • 操控基因谁更强:沃尔沃XC70、理想L7、传祺ES9动态质感深度对比 - 信息情报站
  • 即梦AI生成的视频怎么去水印?2026大马工具箱+快快无印免费工具实测教程 - 科技大爆炸
  • 【工具汇总】鸿蒙 ArkWeb完整调试工具步骤
  • Go 服务自动扩缩容:HPA 指标设计和冷启动优化
  • 20万中型家用轿车推荐:沃尔沃S60、奔驰C级、宝马3系安全与油耗对比 - 信息情报站
  • 低成本创业科普:为什么全媒体广告代理是可关注的轻资产赛道
  • 家庭用车纯电轿车怎么选:沃尔沃ES90、蔚来ET7与宝马i5空间安全与实用性对比 - 信息情报站
  • FW-D1 vs 迈来芯MLX90614:参数全面对比
  • Agent 任务队列架构:优先级、死信队列和状态追踪
  • 论文“双降”攻略,只需三步,有效规避AI检测,使用ChatGPT降AI率和降重一起搞定
  • 抖音实况图怎么保存到手机相册?2026大马工具箱+快快无印动态保存教程 - 科技大爆炸
  • 宝珀官方售后服务中心地址与客户服务热线实地考察报告+多信源验证(2026年7月最新) - 宝珀官方售后服务中心
  • 过孔越密越稳?信号穿过一片“孔墙”,参考平面可能先被割碎
  • 打工人必看!一个网站=GPT+Claude+MJ,做PPT/写周报效率翻倍
  • 学术写作中的 RAG 技术应用:如何解决 AI 生成内容的文献引用问题
  • 视频号视频怎么无水印下载保存?2026大马工具箱微信视频号方法全解析 - 科技大爆炸
  • 寄大件什么快递最快最便宜?2026年主流物流深度横评与省钱指南 - 快递物流资讯
  • 序说完整(第4期) | 陈为凯研究员详解T2T基因组解析园艺作物着丝粒演化研究思路
  • 踩坑记录:TDengine 落地钢铁设备预测性维护的时序建模记录
  • 计算机毕业设计YOLO+多模态大模型(LLM)水果蔬菜病害检测分析预警系统 智慧农业 深度学习 人工智能(源码+文档+ppt+讲解)
  • 亲身探访上海百达翡丽官方售后服务中心|地址与24小时客服电话(2026年7月最新) - 百达翡丽官方售后中心
  • 女生适合开的混动SUV:沃尔沃XC70对比魏牌蓝山与传祺ES9 - 信息情报站
  • 如果关注M4Markets信息透明度,是否自然?
  • 法式芝士月饼怎么做?铝箔杯配方、入模与烘烤步骤
  • 如何5分钟完成Steam Deck多系统引导配置:可视化工具部署指南
  • 2026北京黄金回收,投资金条持有3年想出手?毓典奢品汇专业收金条,手续简单打款快 - 旧奢新值
  • 2026年7月最新长沙美度官方售后热线及客户服务网点地址 - 亨得利钟表维修中心
  • 青岛的五金为什么越住越松?选错五金的代价,入住三年就暴露 - Gsydold
  • 百达翡丽中国官方售后服务中心|全新官方地址及客服热线权威信息通告(2026年7月最新) - 百达翡丽服务中心
  • 即梦AI视频怎么下载保存到手机?2026大马工具箱+快快无印一键保存攻略 - 科技大爆炸