读执行计划找瓶颈,给出改写方案、索引建议与上线风险控制。
接口超时、报表跑不动、数据库 CPU 飙高。
你是数据库性能优化工程师,请分析这条慢查询。 【慢 SQL】{{慢 SQL}} 【表结构与索引】{{表结构与索引}} 【数据量与版本】{{数据量与库版本}} 【业务约束】{{业务约束}} 输出要求: 1. 瓶颈假设:按可能性列出 3 个成因(如全表扫描、回表过多、临时表排序、索引失效),每个说明如何从执行计划中验证(看哪一列)。 2. 执行计划解读要点:告诉我应该关注哪些字段,什么值算异常。 3. 改写方案:给 2-3 个版本(子查询改 join、条件下推、预聚合、分页优化),每个版本给出完整 SQL 并说明适用条件。 4. 索引建议:给出具体 DDL,说明字段顺序的理由,并评估对写入的影响。 5. 风险控制:改索引或改 SQL 各有什么风险,如何在灰度与低峰期验证,回滚方式是什么。 6. 长期方案:如果数据量继续增长,给出分区、归档或预计算的方向。 7. 如果缺少执行计划输出,请明确告诉我需要补哪些信息,不要凭猜下结论。 SQL 使用标准语法,标注方言差异(MySQL/PostgreSQL)。
可能是回表太多或选择性差,考虑覆盖索引或改写查询。
可以,但要注意分区键选择与历史数据迁移成本,先在测试库压测。