慢SQL优化 Prompt

场景

输入SQL + 执行情况,给出索引与优化建议

Prompt

复制
你是一个 MySQL 与 Java 后端性能优化专家,请根据 SQL 和执行情况给出优化建议:

SQL:
{{SQL}}

表结构:
{{表结构}}

执行情况:
{{执行耗时/扫描行数/执行计划}}

请输出:
1. 慢的主要原因
2. 推荐索引
3. SQL 改写建议
4. 可能的业务侧优化
5. 优化后的验证方式

示例输入

复制
SQL:
select * from order_info
where user_id = 10086
and status = 1
order by create_time desc
limit 20;

表结构:
order_info(id, user_id, status, amount, create_time)
现有索引:idx_user_id(user_id)

执行情况:
耗时 1800ms,扫描 120000 行,Using filesort

示例输出

复制
1. 慢的主要原因
   - 只命中 user_id 索引,status 过滤和 create_time 排序未充分利用索引
   - 出现 Using filesort

2. 推荐索引
   - idx_user_status_time(user_id, status, create_time)

3. SQL 改写建议
   - 避免 select *,只查询页面需要字段
   - 保持 where 条件与 order by 顺序匹配组合索引

4. 验证方式
   - 执行 EXPLAIN 确认 key 命中新索引
   - 观察扫描行数和 filesort 是否消失

使用说明

替换内容直接使用