适用场景
- 慢查询改写评审
- 加索引变更窗口前确认
- 接口性能优化排期
PROMPT
【指令】 1. 把订单统计慢查询改写到一秒内,并给出对应索引建法; 2. 保留原有返回字段与排序,不改动前端调用的接口签名; 3. 同时输出改写前后的执行计划对比,标出扫描行数变化; 4. 用线上真实数据分布验证,不许用构造数据代替。 【上下文】 1. 表为订单主表,现有八百万行,索引只有主键与商户单列; 2. 业务要求同一查询兼顾按商户聚合与按日区间统计两种用法; 3. 线上为 MySQL 8.0,允许加联合索引,加索引要走变更窗口; 4. 该接口每分钟被调用约四十次,是首页看板的数据来源。 【输入数据】 1. 原语句按商户分组统计近三十天金额,带状态与创建时间过滤; 2. 字段为 id 主键、merchant_id、status、amount、create_time、pay_time; 3. 现有索引仅 PRIMARY 与 merchant_id 单列,status 上没有索引; 4. 执行计划显示全表扫描,预估行数 800 万,过滤后约 12 万行。 【输出要求】 1. 先给改写后的完整语句,不写省略号与伪代码; 2. 再给索引语句,写明字段顺序与选择该顺序的理由; 3. 附执行计划对比表,列出扫描方式、预估行数与耗时三列; 4. 最后写三条变更窗口执行注意事项,总长控制在一百二十字内。