news 2026/4/15 6:03:54

SQL 调优全解:从 20 s 到 200 ms 的 6 步实战笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL 调优全解:从 20 s 到 200 ms 的 6 步实战笔记

01 先上结论:一张图记住调优路线

慢查询日志 → EXPLAIN → 索引补齐 → SQL 改写 → 覆盖/物化 → 读写分离 → 监控闭环

把这 7 个节点背下来,90% 的性能问题都能一路绿灯。

02 真实案例:500 万订单表,20 s→0.2 s

阶段动作耗时变化
① 索引缺失给 WHERE + JOIN 字段建联合索引20.3 s→8.5 s
② SQL 写法小表驱动、先过滤再 JOIN8.5 s→2.3 s
③ 覆盖索引把 SELECT 列也包进索引,不回表2.3 s→0.8 s
④ 物化视图小时级汇总表 + 定时刷新0.8 s→0.2 s
⑤ 读写分离一主两从,读并发×3QPS 3k→9k
⑥ 冷热归档90 天前迁历史库,热表-70%备份 4 h→40 min

结论:索引是根基,改写是利器,架构是护城河。

03 索引设计 10 条军规(背下来)

  1. 等值放左,范围放右;like 模糊查询%放最右。
  2. 禁止对索引列写函数(WHERE DATE(create_time)=...会全表扫描)。
  3. OR 条件要么改 UNION,要么建合并索引。
  4. 无法覆盖就开启 ICP(Index Condition Pushdown)。
  5. 单表索引 ≤6 个;写多读少场景宁可砍掉。
  6. 长字符串用前缀索引(url(20))。
  7. 区分度 <10% 的字段不单独建索引。
  8. 联合索引顺序 = 查询字段顺序照抄。
  9. ORDER BY 字段放联合索引尾部。
  10. 亿级表优先分区+局部索引,最后再分库分表。

04 SQL 改写 7 大套路

  1. JOIN 代替相关子查询→ 半连接,索引可穿透。
  2. 小表驱动→ Straight Join 强制执行顺序。
  3. 延迟关联→ 深分页LIMIT 1000000,10改“先拿 id 再回表”。
  4. 预聚合→ 提前GROUP BY子查询,减少主查询行数。
  5. UNION 代替 OR→ 不同列 OR 拆 Union,各走各索引。
  6. 批量代替循环→ 一条 SQL 插 1000 行,减少 1000 次往返。
  7. 只查需要的列→ 杜绝SELECT *,让覆盖索引成为可能。

05 执行计划“三看三改”

含义怎么改
type访问类型:ALL→index→range→ref→eq_ref→const→system越靠右越好,ALL 就加索引
key实际用到的索引NULL 就是没用到,看 key_len 判断用了前几列
rows预估扫描行数扫描/返回 >20 倍就要改索引或 SQL

06 高并发架构层兜底

  1. 主从 + 读写分离:Dynamic-datasource / ShardingSphere 路由。
  2. 连接池:HikariCP 大小 =(CPU 核心×2)+有效磁盘数
  3. Redis 挡 95% 热读,Key 加版本号防穿透。
  4. 异步写:非关键路径先写 MQ,再异步落库,抗 10 倍峰值。
  5. 参数调优:
  • innodb_flush_log_at_trx_commit=2+sync_binlog=0(允许丢 1 s 日志,写性能↑30%)。
  • max_connections=1000thread_pool_size=CPU 核数

07 场景速查表(收藏备用)

场景关键手段收益
深分页延迟关联 + 游标分页10 ms→1 ms
唯一检查唯一索引 + INSERT IGNORE避免 SELECT+INSERT 竞态
热点行更新拆成多条记录 / 分桶并发↑5 倍
亿级大表分区(RANGE/HASH)+ 局部索引备份 8 h→1 h
统计报表小时级物化视图 + 定时刷新30 s→200 ms

08 一句话总结

“索引是根基,改写是利器,架构是护城河,监控是生命线。”
把这篇扔进收藏夹,下次慢查询别再到处搜语法,直接翻出来照抄即可。
如果对你有用,记得点个赞,评论区交流你的“秒优化”技巧!

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

Z-Image-Edit与传统PS操作对比:效率差距有多大?

Z-Image-Edit与传统PS操作对比&#xff1a;效率差距有多大&#xff1f; 在电商运营、内容创作和广告设计领域&#xff0c;图像编辑曾长期被视作“高门槛、低效率”的代名词。一张商品图的背景更换、风格调整或细节优化&#xff0c;往往需要设计师打开 Photoshop&#xff0c;花上…

作者头像 李华
网站建设 2026/4/14 14:34:27

Z-Image-Base模型知识遗忘机制探讨:删除特定概念

Z-Image-Base模型知识遗忘机制探讨&#xff1a;删除特定概念 在生成式AI迅速渗透内容创作、设计辅助乃至企业级应用的今天&#xff0c;一个看似简单却极具挑战性的问题正浮出水面&#xff1a;我们能否让一个已经“学会”的大模型真正“忘记”某个特定概念&#xff1f; 这不仅是…

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

安防监控视频汇聚平台EasyCVR打造出入口匝道安全畅行智慧管理方案

出入口匝道作为高速公路、城市快速路的关键交通节点&#xff0c;是车流交汇、方向转换的核心区域&#xff0c;却也长期面临拥堵频发、事故率高、管控滞后等痛点。传统视频监控方案因存在协议兼容不足、网络传输不稳定、智能分析缺失等问题&#xff0c;难以满足匝道场景实时管控…

作者头像 李华
网站建设 2026/4/10 19:37:15

华为FreeBuds Pro 5:音质和降噪都满级,真正的真无线降噪旗舰

华为推出新一代旗舰Mate80 系列和全新大折叠Mate X7的同时&#xff0c;也发布了新一代旗舰级真无线降噪耳机——华为FreeBuds Pro 5&#xff0c;定价1499元。作为华为新一代旗舰级真无线降噪耳机&#xff0c;华为这次在传输质量、降噪表现方面都有大幅度的提升&#xff0c;降噪…

作者头像 李华
网站建设 2026/4/10 14:40:22

Reloaded-II模组无限下载循环问题终极解决方案

Reloaded-II模组无限下载循环问题终极解决方案 【免费下载链接】Reloaded-II Next Generation Universal .NET Core Powered Mod Loader compatible with anything X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II 在使用Reloaded-II为游戏安装模组…

作者头像 李华
网站建设 2026/4/9 19:28:20

Z-Image-Edit指令理解能力极限挑战:超长复杂描述测试

Z-Image-Edit指令理解能力极限挑战&#xff1a;超长复杂描述测试 在广告设计、电商展示和数字内容创作日益依赖AI生成的今天&#xff0c;一个核心问题逐渐浮现&#xff1a;当用户的需求不再是“画一只猫”&#xff0c;而是“把左上角穿红裙的女人换成戴墨镜的金发男子&#xff…

作者头像 李华