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

MySQL 索引失效与慢查询优化:我被这些SQL坑了3次后总结的保命指南

MySQL 索引失效与慢查询优化我被这些SQL坑了3次后总结的保命指南大家好我是小柚。今天来聊聊我在MySQL索引上踩过的那些坑相信很多同学和我一样觉得只要加了索引查询就会快结果实际项目上线后某些SQL还是慢得像蜗牛查了半天才发现是索引失效了。今天就把我的踩坑经历整理出来分享给同样被索引问题困扰的同学们。踩坑现场一索引列上做函数操作索引直接失效问题描述我记得第一次优化慢SQL时信心满满地给created_at字段加了索引结果查询还是用了3秒。SQL是这样的SELECT*FROMordersWHEREYEAR(created_at)2026ANDMONTH(created_at)3;原因分析这就是典型的索引列上做函数操作导致索引失效的例子。MySQL的B树索引存储的是字段的原始值而YEAR()和MONTH()函数需要对索引列进行计算后才能比较计算过程中索引无法被使用。解决方案不要在索引列上直接使用函数可以改用范围查询或者虚拟列索引-- 方案1改用范围查询利用索引SELECT*FROMordersWHEREcreated_at2026-03-01ANDcreated_at2026-04-01;-- 方案2利用函数索引MySQL 8.0-- 先创建函数索引ALTERTABLEordersADDINDEXidx_year_created((YEAR(created_at)));-- 然后查询就能用上索引了SELECT*FROMordersWHEREYEAR(created_at)2026;注意事项尽量避免在 WHERE 条件中对索引字段使用函数MySQL 8.0 支持函数索引可以根据业务场景合理使用如果必须使用函数可以考虑生成一个冗余字段来存储计算结果踩坑现场二字符串不加引号隐式类型转换毁索引问题描述有一次我写了这样一个查询SELECT*FROMusersWHEREphone13800138000;phone字段是VARCHAR类型我居然没加引号这条SQL执行了3秒而表中数据才10万条。原因分析这就是隐式类型转换的问题。当VARCHAR类型的字段与数字比较时MySQL会自动把VARCHAR转换成数字这相当于在索引列上做了函数操作导致索引失效。解决方案一定要记得给字符串字段加引号-- 正确写法SELECT*FROMusersWHEREphone13800138000;-- 如果业务上必须用数字比较可以加一个数字类型字段ALTERTABLEusersADDCOLUMNphone_numBIGINTUNSIGNEDGENERATED ALWAYSAS(CAST(phoneASUNSIGNED))STORED;ALTERTABLEusersADDINDEXidx_phone_num(phone_num);-- 然后用数字字段查询SELECT*FROMusersWHEREphone_num13800138000;注意事项养成良好的编码习惯字符串字面量加引号避免在代码中拼接SQL使用参数化查询可以开启慢查询日志监控发现类似的隐式转换问题踩坑现场三like 模糊匹配以 % 开头索引无法使用问题描述我想查用户名包含小柚的用户SELECT*FROMusersWHEREusernameLIKE%小柚%;这条SQL查了2秒用户体验极差。原因分析B树索引是最左前缀匹配原则%在左边会导致索引无法定位必须全表扫描。解决方案根据业务场景选择合适的方案-- 方案1右模糊匹配可以利用索引如果需要前后都模糊考虑全文索引SELECT*FROMusersWHEREusernameLIKE小柚%;-- 方案2使用全文索引MySQL 5.6 InnoDB支持ALTERTABLEusersADDFULLTEXTINDEXft_username(username);SELECT*FROMusersWHEREMATCH(username)AGAINST(小柚INNATURALLANGUAGEMODE);-- 方案3使用第三方搜索引擎Elasticsearch处理复杂搜索场景注意事项模糊查询尽量使用右匹配%xxx而非%xxx%对于频繁的全文搜索需求建议引入 Elasticsearch可以利用前缀索引减少索引体积踩坑现场四复合索引不遵循最左前缀原则问题描述我给用户表建了一个复合索引(status, type, created_at)然后这样查询SELECT*FROMusersWHEREtype1ANDcreated_at2026-01-01;查询还是慢原来以为有索引就快了结果还是too young。原因分析复合索引有最左前缀原则必须从左到右依次使用索引字段。查询从type开始跳过了status导致索引无法使用。解决方案调整SQL顺序或索引结构-- 方案1调整SQL顺序遵循最左前缀SELECT*FROMusersWHEREstatus1ANDtype1ANDcreated_at2026-01-01;-- 方案2根据实际查询创建合适的索引-- 如果经常按 type created_at 查询建这个索引ALTERTABLEusersADDINDEXidx_type_created(type,created_at);-- 如果经常按 status created_at 查询建这个索引ALTERTABLEusersADDINDEXidx_status_created(status,created_at);注意事项创建复合索引时考虑实际查询的字段顺序可以使用EXPLAIN分析查询计划确认索引是否被使用不要创建过多的索引会影响写性能踩坑现场五or 连接的条件有一个没索引就全表扫描问题描述我想查状态为1或者类型为2的用户SELECT*FROMusersWHEREstatus1ORtype2;status有索引type没有查询还是慢。原因分析OR 运算符要求两边的条件都必须有索引否则就会全表扫描。只要有一个字段没有索引MySQL优化器就会放弃使用索引。解决方案使用 UNION 代替 OR或者给没有索引的字段加索引-- 方案1使用 UNION每个条件可以单独使用索引SELECT*FROMusersWHEREstatus1UNIONALLSELECT*FROMusersWHEREtype2;-- 方案2给 type 字段加索引ALTERTABLEusersADDINDEXidx_type(type);-- 方案3如果业务允许改用 INSELECT*FROMusersWHEREstatusIN(1,2);注意事项尽量避免使用 OR改用 UNION 或 IN确保 OR 两边的字段都有索引可以用EXPLAIN确认查询计划总结以上就是我在MySQL索引上踩过的5个坑总结一下索引列上不要做函数操作- 会导致索引失效字符串比较要加引号- 避免隐式类型转换模糊查询%放右边- 遵循最左前缀原则复合索引要按顺序使用- 从左到右依次使用OR两边都要有索引- 否则全表扫描最后给大家一个建议永远用 EXPLAIN 分析你的SQL不要凭感觉判断索引是否生效。MySQL优化器有时候的选择可能和你想的不一样。如果觉得这篇文章有帮助欢迎点赞收藏我会持续更新更多实战踩坑经历。有什么问题也欢迎在评论区留言讨论延伸思考索引优化只是SQL优化的一部分除了索引还需要注意什么比如避免 SELECT *只查询需要的字段合理使用覆盖索引避免回表大数据量分页要用延迟关联考虑使用查询缓存或Redis缓存热点数据这些话题我们以后有机会再详细聊~

相关文章:

MySQL 索引失效与慢查询优化:我被这些SQL坑了3次后总结的保命指南

MySQL 索引失效与慢查询优化:我被这些SQL坑了3次后总结的保命指南大家好,我是小柚🐾。今天来聊聊我在MySQL索引上踩过的那些坑相信很多同学和我一样,觉得只要加了索引查询就会快,结果实际项目上线后,某些SQ…...

GitHub 热榜项目 - 日榜(2026-03-15)

GitHub 热榜项目 - 日榜(2026-03-15) 生成于:2026-03-15 统计摘要 共发现热门项目: 10 个 榜单类型:日榜 本期热点趋势总结 本期 GitHub 热榜呈现出 AI Agent 生态向纵深发展的显著趋势,核心热点聚焦于 Agentic 开发范式与上…...

腾讯“龙虾”产品矩阵出击,AI 市场风云再起

腾讯“龙虾”产品矩阵:多面出击的办公新势力近期,腾讯一反常态地掀起了“龙虾”热潮,迅速推出了一系列相关产品。其中,被称为腾讯版“免部署小龙虾”的办公工具 WorkBuddy,支持一键启动,并将 AI 代理能力接…...

2026 AWE:具身智能机器人开启家庭服务新时代

追觅“轮椅机器人”:补齐家庭清洁与出行短板在 2026 年 AWE 展会上,追觅包下七千平方米的 E7 馆展示众多新品。其“轮椅机器人”引人注目,它依靠四个轮子能稳定快捷地在卧室和阳台间移动,老人还能当轮椅使用。此外,它配…...

AWE 2026:“新人车家”时代,机器人引领家电消费新变革

机器人闪耀 AWE 2026,“新人车家”概念全新登场2026 年 3 月 12 日,AWE 2026 在上海新国际博览中心开幕。作为全球三大家电及消费电子展之一,此次展会传统家电品类齐聚,更有众多机器人亮相。海信发布管家机器人 Savvy,…...

值得买商品详情页前端性能优化实战

值得买商品详情页前端性能优化实战一、背景与挑战值得买(SMZDM)作为导购电商平台,商品详情页具有以下特点:内容极其丰富:包含商品标题、价格走势、优惠信息、用户晒单、评测文章、参数对比等多个模块社区属性强&#x…...

Cocos2d-x Lua 游戏前端工程架构深度解析

本文基于一个真实的商业游戏项目,详细分析了基于 Cocos2d-x 3.10 引擎的 Lua 游戏前端工程架构。涵盖项目结构、技术架构、网络通信、游戏模块、资源管理等多个维度,为游戏开发者提供完整的工程参考。## 一、项目概览| 项目信息 | 详情 ||---------|----…...

nt!_DEVICE_NODE结构中的ResourceRequirements结构类型为_IO_RESOURCE_REQUIREMENTS_LIST

nt!_DEVICE_NODE结构中的ResourceRequirements结构类型为_IO_RESOURCE_REQUIREMENTS_LIST0: kd> !DevNode 0x899c1008 6 DevNode 0x899c1008 for PDO 0x899c1de0Parent 0x899c5850 Sibling 0000000000 Child 0x899875a8 InstancePath is "ACPI_HAL\PNP0C08\0&quo…...

!devnode 扩展显示设备树中节点的相关信息的一个例子中的CmResourceList和BootResourcesList和IoResList

!devnode 扩展显示设备树中节点的相关信息的一个例子中的CmResourceList和BootResourcesList和IoResListCmResourceListBootResourcesList IoResList!devnode 扩展显示设备树中节点的相关信息。 dbgcmd!devnode Address [Flags] [Service] !devnode 1 !devnode 2参数地址 指定…...

数字化智能工厂MES规划建设方案:整体规划与架构、基于RFID的全流程追溯、物联网与数据可视化、预期效益与实施

该方案以RFID技术为核心,通过“无感知”数据采集和在线协同,将生产指令、质量标准和异常响应直接落地到工位,有效解决了制造过程中信息滞后、追溯困难的问题。 1000余份数字工厂合集(PPTWORD):智能工厂工业…...

【69页PPT】全生命周期数字健康智慧医共体解决方案:“1”朵健康云、“3”大核心应用、“N”类服务应用迭代、区域医院智慧管理平台...

本方案以“健康云”和大数据中心为核心,构建市县级智慧医共体。通过开放平台整合医疗资源,实现数据互联互通与业务协同。方案提供从临床辅助、运营决策到居民服务的全周期应用,旨在打破信息孤岛,提升区域医疗服务效率与管理水平&a…...

【AI应用出海】

AI应用出海 商品出海的成功案例通常涉及多方面的策略和技术支持。以下是一些典型案例: 案例1:跨境电商平台 某电商平台利用AI技术优化商品推荐和定价策略,通过分析海外用户行为数据,实现精准营销。该平台在东南亚市场增长迅速&…...

PyCharm:设置保存时自动格式化代码

文件-》设置:在左侧找到工具-》保存时的操作,在右侧窗口中勾选“重新设置代码格式”:...

学长亲荐!AI论文平台 千笔ai写作 VS speedai,专科生写论文更轻松!

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…...

专科生也能用!千笔,倍受青睐的AI论文写作软件

你是否曾为论文选题发愁?是否在撰写过程中感到思路混乱、资料难找?又或者反复修改却仍担心查重率和格式问题?这些困扰,几乎成了每个学生的“毕业必修课”。而如今,一款专为学生打造的AI论文写作工具——千笔AI&#xf…...

2026年专科生必看!学生热捧的降AIGC平台 —— 千笔·专业降AI率智能体

在AI技术迅速渗透学术写作领域的今天,越来越多的学生和研究人员开始依赖AI工具提升写作效率。然而,随之而来的“AI率超标”问题也愈发严峻——随着查重系统不断升级,AI生成内容的痕迹被更加精准地识别,论文一旦被判定为AI痕迹过重…...

MySQL迁移到金仓的集合类型支持实践:CREATE TYPE + SET 的兼容实现

MySQL迁移到金仓的集合类型支持实践:CREATE TYPE SET 的兼容实现 在当前信创加速落地的背景下,金仓数据库(KingbaseES)因其对MySQL生态的深度适配能力,正被政务、金融、能源等关键行业纳入核心系统技术评估范围。尤其…...

COMSOL 助力燃料电池冷启动仿真:探索低温下的运行奥秘

COMSOL 燃料电池,冷启动仿真 低温质子交换膜燃料电池冷启动仿真模型,cold start,可仿真包括冰的形成过程,温度分布,电流分布,物质浓度分布,速度压力分布以及膜中水分布,可提供相关方…...

Vibe Coding 踩了 84 亿 Token 的坑之后,我总结了这 8 条生存法则

你的 Vibe Coding 为什么总在最后 20% 崩掉? 相信你有过这种体验: 开局顺滑,AI 刷刷刷地出代码,感觉自己要起飞了。到了项目中后期,Bug 开始出现,你让 AI 修,它修完这里坏那里;再修&…...

YOLO26改进86:全网首发--c3k2模块添加DynamicFilter模块

论文介绍 配备多头自注意力机制(MHSA)的模型在计算机视觉领域已取得显著性能。这类模型的计算复杂度与输入特征图像素数量的平方成正比,导致处理速度较慢,尤其在处理高分辨率图像时更为明显。 为解决这一问题,研究者提出新型令牌混合器作为MHSA的替代方案:基于快速傅里叶…...

【最全】2026年OpenClaw(Clawdbot)摸鱼人9分钟搭建及使用教程

【最全】2026年OpenClaw(Clawdbot)摸鱼人9分钟搭建及使用教程。OpenClaw是什么?OpenClaw能做什么?OpenClaw怎么部署?OpenClaw(前身为Clawdbot/Moltbot)作为开源、本地优先的AI助理框架&#xff…...

跨境电商WMS的生命周期的庖丁解牛

跨境电商 WMS (Warehouse Management System,仓储管理系统) 的生命周期,是实物履约效率、库存数据精度、作业成本控制的三重演进。 与 ERP 关注“生意逻辑”、TMS 关注“运输链路”不同,WMS 的核心是**“库内作业”。在跨境场景下&#xff0c…...

跨境电商TMS的生命周期的庖丁解牛

跨境电商 TMS (Transportation Management System,运输管理系统) 的生命周期,是物流履约能力、成本控制精度、数据可视化程度的三重演进。 与 ERP 关注“订单与资金”不同,TMS 的核心是**“货的流动”**。在跨境场景下,这种流动跨…...

实证分析中的代理变量:理论基础与应用案例

温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。 New! 搜推文,找资料,用 lianxh 命令: 安装: ssc install lianxh, replace 使用: lianxh 合成控制  …...

Linux全新安装后只跑这5条命令,从几小时折腾到几分钟搞定,效率直接起飞

过去一年,我因为评测新发行版、测试硬件兼容性,重装Linux系统超过15次。以前每次重装都要花半天时间:更新系统、换镜像源、一个个敲命令装软件、重新配终端主题、设置备份……折腾到头晕眼花。 现在呢?全新安装完系统后,我只跑5条核心命令(加上几行辅助操作),整个过程…...

交稿前一晚!降AIGC工具 千笔·降AI率助手 VS 灵感风暴AI,专科生专用

在AI技术迅速发展的今天,越来越多的专科生开始借助AI工具辅助论文写作,以提升效率和内容质量。然而,随着学术查重系统对AI生成内容的识别能力不断提升,论文中的“AI痕迹”和“重复率”问题也愈发突出。许多学生在交稿前夜才发现论…...

消耗4000万Token后,我发现了OpenClaw的“吞金“真相(附完整优化方案)

日期: 2026-03-15 标签: OpenClaw, Token优化, AI成本控制, Claude, 大模型💸 血泪教训:4000万Token是怎么烧没的 从今年初开始重度使用OpenClaw,三个月后查看账单,我整个人都懵了——4000万Token&#xff…...

国产openclaw重磅来袭,阿里 CoPaw vs 腾讯 WorkBuddy 安装部署全攻略

日期: 2026-03-15 标签: AI智能体, CoPaw, WorkBuddy, 办公自动化, Agent 📋 前言 2026年被称为"AI Agent爆发元年",国内两大巨头相继推出重磅产品: 阿里 CoPaw:开源个人AI助理,端云…...

周末安排生成器,输入预算,人数,偏好,自动推荐活动方案,告别选择困难。

周末安排生成器 - 智能决策系统一、实际应用场景描述场景:小王计划这个周末和朋友一起出去玩,但面对众多选择感到纠结。他打开"周末安排生成器",输入预算5000元、4个人、偏好"户外美食文化",系统立即生成3套不…...

四旋翼无人机空中悬停研究

四旋翼无人机空中悬停是无人机应用中的核心功能之一,其核心作用在于通过精确控制四个旋翼的转速差异,实现无人机在三维空间中的稳定静止状态。这一功能不仅为航拍、测绘、环境监测等任务提供了稳定的操作平台,更在复杂环境如城市峡谷、室内空…...