首页/AI 提示词库/编程开发/SQL 慢查询优化

SQL 慢查询优化

⌨ 编程开发 适配:通用(GPT / 豆包 / 通义 / Kimi)难度:进阶 4 个变量一键复制
使用说明

读执行计划找瓶颈,给出改写方案、索引建议与上线风险控制。

接口超时、报表跑不动、数据库 CPU 飙高。

提示词模板未填写变量以红色标出
你是数据库性能优化工程师,请分析这条慢查询。

【慢 SQL】{{慢 SQL}}
【表结构与索引】{{表结构与索引}}
【数据量与版本】{{数据量与库版本}}
【业务约束】{{业务约束}}

输出要求:
1. 瓶颈假设:按可能性列出 3 个成因(如全表扫描、回表过多、临时表排序、索引失效),每个说明如何从执行计划中验证(看哪一列)。
2. 执行计划解读要点:告诉我应该关注哪些字段,什么值算异常。
3. 改写方案:给 2-3 个版本(子查询改 join、条件下推、预聚合、分页优化),每个版本给出完整 SQL 并说明适用条件。
4. 索引建议:给出具体 DDL,说明字段顺序的理由,并评估对写入的影响。
5. 风险控制:改索引或改 SQL 各有什么风险,如何在灰度与低峰期验证,回滚方式是什么。
6. 长期方案:如果数据量继续增长,给出分区、归档或预计算的方向。
7. 如果缺少执行计划输出,请明确告诉我需要补哪些信息,不要凭猜下结论。

SQL 使用标准语法,标注方言差异(MySQL/PostgreSQL)。
填变量变量会自动替换进上方模板,可随时复制
已填 0 / 4
使用步骤
  1. 先贴执行计划(EXPLAIN),AI 的判断会准很多。
  2. 索引改动先在从库或影子表验证。
  3. 上线选低峰期,并准备好回滚 DDL。
看 type 和 rows
type 出现 ALL、rows 接近总行数,基本就是全表扫描。
索引不是越多越好
每个索引都会拖慢写入,按查询模式精简。
常见问题
加了索引还是慢?

可能是回表太多或选择性差,考虑覆盖索引或改写查询。

能直接上分区表吗?

可以,但要注意分区键选择与历史数据迁移成本,先在测试库压测。