两个 JOIN 列都有索引,MySQL 还是跑了 38 秒


两个 JOIN 列都有索引,MySQL 还是跑了 38 秒 场景:订单明细查询从 200ms 飙升到 38 秒,orders(500 万行)JOIN order_items(2000 万行),两个 JOIN 列都有索引 路径:EXPLAIN → 驱动表 rows 异常 → 统计信息过旧 → STRA

GROUP BY 查询性能骤降的根因分析


GROUP BY 查询性能骤降的根因分析 场景:月度 Top 消费用户查询从 0.12 秒变 4.7 秒,加了索引也没用 路径:EXPLAIN → Using temporary → 临时表磁盘溢出 → 组合覆盖索引 上篇讲了索引失效的 10 种场景,这次我们来看一个更隐蔽的坑——索引没失效,查询照

索引失效的 10 种场景:用 EXPLAIN 一个个验证


索引失效的 10 种场景:用 EXPLAIN 一个个验证 本文是 SQL 与数据库排障 系列的第 2 篇 叙事框架:现象 → 排查过程 → 根因 → 修复 → 预防 问题现象 第一次复盘 某日,团队做完上周的慢 SQL 事故复盘后,群里讨论热烈。张工把事故报告整理出来,核心原因是 WHERE 条件写

一个慢 SQL 打垮了整个服务?从 EXPLAIN 到索引优化全实战


一个慢 SQL 打垮了整个服务?从 EXPLAIN 到索引优化全实战 本文是 SQL 与数据库排障系列的第一篇 叙事框架:现象 → 排查过程 → 根因 → 修复 → 预防 问题现象 某日上午 9:20 左右,监控突然告警:订单服务的 P95 响应时间飙升至 32.7 秒,数据库连接池使用率瞬间冲到